Bun lit vos fichiers .env automatiquement et fournit des moyens idiomatiques de lire et écrire vos variables d'environnement par programmation. De plus, certains aspects du comportement d'exécution de Bun peuvent être configurés avec des variables d'environnement spécifiques à Bun.
Définir les variables d'environnement
Bun lit les fichiers suivants automatiquement (listés par ordre de prépondérance croissante).
.env.env.production,.env.development,.env.test(selon la valeur deNODE_ENV).env.local
FOO=bonjour
BAR=mondeLes variables peuvent également être définies via la ligne de commande.
FOO=bonjourmonde bun run dev# Utilisation de CMD
set FOO=bonjourmonde && bun run dev
# Utilisation de PowerShell
$env:FOO="bonjourmonde"; bun run devSolution multiplateforme avec Windows">
Pour une solution multiplateforme, vous pouvez utiliser bun shell. Par exemple, la commande bun exec.
bun exec 'FOO=bonjourmonde bun run dev'Sur Windows, les scripts package.json appelés avec bun run utiliseront automatiquement le bun shell, rendant ce qui suit également multiplateforme.
"scripts": {
"dev": "NODE_ENV=development bun --watch app.ts",
},Ou par programmation en assignant une propriété à process.env.
process.env.FOO = "bonjour";Spécifier manuellement les fichiers .env
Bun prend en charge --env-file pour remplacer le fichier .env spécifique à charger. Vous pouvez utiliser --env-file lors de l'exécution de scripts dans le runtime de bun, ou lors de l'exécution de scripts package.json.
bun --env-file=.env.1 src/index.ts
bun --env-file=.env.abc --env-file=.env.def run buildDésactiver le chargement automatique .env
Utilisez --no-env-file pour désactiver le chargement automatique des fichiers .env de Bun. Ceci est utile dans les environnements de production ou les pipelines CI/CD où vous voulez vous fier uniquement aux variables d'environnement système.
bun run --no-env-file index.tsCela peut également être configuré dans bunfig.toml :
# Désactiver le chargement des fichiers .env
env = falseLes fichiers d'environnement fournis explicitement via --env-file seront toujours chargés même si le chargement par défaut est désactivé.
Guillemets
Bun prend en charge les guillemets doubles, les guillemets simples et les backticks de littéral de modèle :
FOO='bonjour'
FOO="bonjour"
FOO=`bonjour`Expansion
Les variables d'environnement sont automatiquement étendues. Cela signifie que vous pouvez référencer des variables précédemment définies dans vos variables d'environnement.
FOO=monde
BAR=bonjour$FOOprocess.env.BAR; // => "bonjourmonde"Ceci est utile pour construire des chaînes de connexion ou d'autres valeurs composées.
DB_USER=postgres
DB_PASSWORD=secret
DB_HOST=localhost
DB_PORT=5432
DB_URL=postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAMECela peut être désactivé en échappant le $ avec un backslash.
FOO=monde
BAR=bonjour\$FOOprocess.env.BAR; // => "bonjour$FOO"dotenv
De manière générale, vous n'aurez plus besoin de dotenv ou dotenv-expand, car Bun lit les fichiers .env automatiquement.
Lire les variables d'environnement
Les variables d'environnement actuelles peuvent être accédées via process.env.
process.env.API_TOKEN; // => "secret"Bun expose également ces variables via Bun.env et import.meta.env, qui est un simple alias de process.env.
Bun.env.API_TOKEN; // => "secret"
import.meta.env.API_TOKEN; // => "secret"Pour afficher toutes les variables d'environnement actuellement définies dans la ligne de commande, exécutez bun --print process.env. Ceci est utile pour le débogage.
bun --print process.env
BAZ=stuff
FOOBAR=aaaaaa
<beaucoup d'autres lignes>TypeScript
Dans TypeScript, toutes les propriétés de process.env sont typées comme string | undefined.
Bun.env.whatever;
// string | undefinedPour obtenir l'autocomplétion et dire à TypeScript de traiter une variable comme une chaîne non optionnelle, nous utiliserons la fusion d'interfaces.
declare module "bun" {
interface Env {
AWESOME: string;
}
}Ajoutez cette ligne à n'importe quel fichier de votre projet. Cela ajoutera globalement la propriété AWESOME à process.env et Bun.env.
process.env.AWESOME; // => stringConfiguration de Bun
Ces variables d'environnement sont lues par Bun et configurent des aspects de son comportement.
| Nom | Description |
|---|---|
NODE_TLS_REJECT_UNAUTHORIZED | NODE_TLS_REJECT_UNAUTHORIZED=0 désactive la validation du certificat SSL. Ceci est utile pour les tests et le débogage, mais vous devriez être très hésitant à utiliser ceci en production. Note : Cette variable d'environnement a été initialement introduite par Node.js et nous avons gardé le nom pour la compatibilité. |
BUN_CONFIG_VERBOSE_FETCH | Si BUN_CONFIG_VERBOSE_FETCH=curl, alors les requêtes fetch journaliseront l'url, la méthode, les en-têtes de requête et les en-têtes de réponse dans la console. Ceci est utile pour déboguer les requêtes réseau. Cela fonctionne également avec node:http. BUN_CONFIG_VERBOSE_FETCH=1 est équivalent à BUN_CONFIG_VERBOSE_FETCH=curl sauf sans la sortie curl. |
BUN_RUNTIME_TRANSPILER_CACHE_PATH | Le transpileur d'exécution met en cache la sortie transpilée des fichiers source de plus de 50 ko. Cela permet aux CLIs utilisant Bun de se charger plus rapidement. Si BUN_RUNTIME_TRANSPILER_CACHE_PATH est défini, alors le transpileur d'exécution mettra en cache la sortie transpilée dans le répertoire spécifié. Si BUN_RUNTIME_TRANSPILER_CACHE_PATH est défini sur une chaîne vide ou la chaîne "0", alors le transpileur d'exécution ne mettra pas en cache la sortie transpilée. Si BUN_RUNTIME_TRANSPILER_CACHE_PATH n'est pas défini, alors le transpileur d'exécution mettra en cache la sortie transpilée dans le répertoire de cache spécifique à la plateforme. |
TMPDIR | Bun nécessite occasionnellement un répertoire pour stocker des assets intermédiaires lors du bundling ou d'autres opérations. Si non défini, utilise par défaut le répertoire temporaire spécifique à la plateforme : /tmp sur Linux, /private/tmp sur macOS. |
NO_COLOR | Si NO_COLOR=1, alors la sortie de couleur ANSI est désactivée. |
FORCE_COLOR | Si FORCE_COLOR=1, alors la sortie de couleur ANSI est forcée, même si NO_COLOR est défini. |
BUN_CONFIG_MAX_HTTP_REQUESTS | Contrôle le nombre maximum de requêtes HTTP concurrentes envoyées par fetch et bun install. Par défaut 256. Si vous rencontrez des limites de débit ou des problèmes de connexion, vous pouvez réduire ce nombre. |
BUN_CONFIG_NO_CLEAR_TERMINAL_ON_RELOAD | Si BUN_CONFIG_NO_CLEAR_TERMINAL_ON_RELOAD=true, alors bun --watch n'effacera pas la console lors du rechargement |
DO_NOT_TRACK | Désactive le téléchargement des rapports de plantage vers bun.report en cas de plantage. Sur macOS et Windows, le téléchargement des rapports de plantage est activé par défaut. Sinon, la télémétrie n'est pas encore envoyée au 21 mai 2024, mais nous prévoyons d'ajouter la télémétrie dans les prochaines semaines. Si DO_NOT_TRACK=1, alors le téléchargement automatique des rapports de plantage et la télémétrie sont tous deux désactivés. |
BUN_OPTIONS | Ajoute des arguments de ligne de commande à toute exécution Bun. Par exemple, BUN_OPTIONS="--hot" fait que bun run dev se comporte comme bun --hot run dev |
Mise en cache du transpileur d'exécution
Pour les fichiers de plus de 50 Ko, Bun met en cache la sortie transpilée dans $BUN_RUNTIME_TRANSPILER_CACHE_PATH ou le répertoire de cache spécifique à la plateforme. Cela permet aux CLIs utilisant Bun de se charger plus rapidement.
Ce cache de transpileur est global et partagé entre tous les projets. Il est sûr de supprimer le cache à tout moment. C'est un cache adressable par contenu, donc il ne contiendra jamais de doublons. Il est également sûr de supprimer le cache pendant qu'un processus Bun est en cours d'exécution.
Il est recommandé de désactiver ce cache lors de l'utilisation de systèmes de fichiers éphémères comme Docker. Les images Docker de Bun désactivent automatiquement ce cache.
Désactiver le cache du transpileur d'exécution
Pour désactiver le cache du transpileur d'exécution, définissez BUN_RUNTIME_TRANSPILER_CACHE_PATH sur une chaîne vide ou la chaîne "0".
BUN_RUNTIME_TRANSPILER_CACHE_PATH=0 bun run devQue met-il en cache ?
Il met en cache :
- La sortie transpilée des fichiers source de plus de 50 Ko.
- La sourcemap pour la sortie transpilée du fichier
L'extension de fichier .pile est utilisée pour ces fichiers mis en cache.