Node.js 20.6 prend en charge les fichiers de configuration .env et ajoute la bibliothèque de récupération de place C++ Oilpan

Dans la dernière version 20.6.0 , Node.js dispose désormais d'une prise en charge intégrée .envdes fichiers. Vous pouvez désormais .envcharger des variables d'environnement à partir d'un fichier dans process.envvotre application Node.js, sans aucune dépendance.

Le chargement .envdes fichiers est désormais très simple :

node --env-file .env

Qu’est-ce que .env ?

.envLes fichiers sont utilisés pour configurer les variables d'environnement qui existeront dans l'application en cours d'exécution. L'idée vient de l'approche d'application à douze facteurs , qui dit de stocker dans votre environnement tout ce qui peut différer selon les déploiements (par exemple, développement, préparation, production) .

La configuration ne doit pas faire partie du code de l’application et ne doit pas non plus être vérifiée dans le contrôle de version. Des éléments tels que les informations d'identification API ou d'autres secrets doivent être stockés séparément et chargés dans l'environnement où ils sont nécessaires. Les fichiers .envvous permettent de gérer la configuration des applications (comme les machines de développement ou CI) où la définition de variables dans l'environnement n'est pas pratique.

Il existe des bibliothèques dans de nombreux langages différents qui prennent en charge .envle chargement de variables dans l'environnement à l'aide de fichiers, elles sont souvent appelées « dotenv », et Node.js dotenv ne fait pas exception. Mais désormais, Node.js prend en charge nativement ce comportement.

Comment utiliser .env dans Node.js ?

Le fichier .envressemble à ceci :

PASSWORD=supersecret
API_KEY=84de8263ccad4d3dabba0754e3c68b7a
# .env files can have comments too

Par convention vous le sauvegardez .envdans le répertoire racine de votre projet, même si vous pouvez le rappeler à volonté.

Vous pouvez ensuite définir les variables du fichier comme variables d'environnement en lançant Node.js et en pointant --env-filel'indicateur vers votre .envfichier. Lors du chargement, les variables peuvent être utilisées comme attributs process.env.

$ node --env-file .env
Welcome to Node.js v20.6.0.
Type ".help" for more information.
> console.log(process.env.PASSWORD)
supersecret
undefined
> console.log(process.env.API_KEY)
84de8263ccad4d3dabba0754e3c68b7a
undefined

Fonctionnalités prises en charge

Le support est désormais assez basique par rapport à dotenv . Par exemple:

  • Impossible actuellement d'utiliser des valeurs multilignes
  • Impossible d'utiliser l'expansion variable
  • Un seul fichier peut être spécifié à la fois. Node.js n'utilisera que le dernier indicateur passé, donc dans l'exemple suivant, seule la variable from .env.developmentest utilisée :
node --env-file .env --env-file .env.development

Il y a encore du travail à faire et certaines de ces fonctionnalités pourraient être ajoutées. Vous pouvez suivre la discussion sur GitHub ici .

défaut

Depuis la version 20.6.0, la documentation indique : "Si la même variable est définie dans l'environnement et dans le fichier, la valeur dans l'environnement est prioritaire. C'est la manière par défaut de fonctionner tous les packages dotenv. Cependant, ce n'est pas le cas. avec l'implémentation actuelle de Node.js , les variables du fichier .envremplaceront l'environnement. Il y a une demande PR pour corriger ce problème.

Avantages de l'implémentation de Node.js

Bien que cette implémentation manque de certaines fonctionnalités, elle présente certains avantages par rapport à l'utilisation de packages tiers. Node.js charge et analyse le fichier au démarrage .env, vous pouvez donc inclure des variables d'environnement qui configurent Node lui-même, par exemple NODE_OPTIONS.

Vous pourriez donc avoir un .envfichier qui ressemble à ceci :

NODE_OPTIONS="--no-warnings --inspect=127.0.0.1:9229"

Ensuite, lorsque vous node --env-file=.envl'exécuterez, le processus s'exécutera sans avertissement et activera 127.0.0.1:9229le vérificateur sur l'adresse IP.

REMARQUE : vous n'êtes pas autorisé à insérer des fichiers NODE_OPTIONS="--env-file .env". Évitez les boucles infinies.

Bibliothèque de récupération de place C++

De plus, la suite d'extensions Node.js C++ prend désormais en charge Oilpan, la bibliothèque de récupération de place C++ dans la version V8, et fournit aux développeurs de nouveaux outils et conseils pour mieux intégrer et gérer les objets et les ressources entre C++ et JavaScript. C'est-à-dire qu'après la version 20.6, Node.js a ajouté une nouvelle méthode de gestion de la mémoire C++ plus efficace, mais la méthode d'origine est toujours disponible.

L'équipe V8 a lancé Oilpan en 2021, qui se caractérise par la fourniture d'un mécanisme de suivi de collecte des déchets qui peut identifier les objets vivants en marquant les objets et recycler les objets morts pendant la phase de recyclage. Oilpan prend également en charge la fragmentation en tas de certains objets. Fonction de compactage. Dans l'ensemble, Oilpan simplifie le modèle de développement du programme et aide à résoudre les problèmes de fuite de mémoire et de libération après utilisation.

Les développeurs qui écrivent des kits d'extension C++ pour les applications Node.js peuvent également utiliser Oilpan, mais le rappel officiel est que Node.js ne package que la bibliothèque de fonctions Oilpan de la V8 et qu'ils ne peuvent pas garantir la stabilité de l'ABI (Application Binary Interface). Étant donné que Oilpan a été testé avec Chrome pendant de nombreuses années, ils pensent également qu'il est peu probable qu'il brise l'ABI. Plus tard, lorsque Oilpan aura suffisamment d’adoption externe et interne, les responsables envisageront de l’inclure dans la garantie de stabilité d’ABI.

Node.js 20.6 ajoute également une nouvelle API à son système de modules, fournissant de nouvelles méthodes permettant aux développeurs de spécifier des fichiers et de personnaliser les Hooks de module. Cette nouvelle fonctionnalité fournit une méthode flexible et puissante qui permet aux développeurs de personnaliser le comportement de chargement et d'analyse des modules, et d'établir la communication. canaux entre le thread d’exécution de l’application principale et le thread d’exécution Hook personnalisé.

Node.js s'améliore constamment

Allez essayer Node.js version 20.6.0 ! La version 20 apporte de nouvelles fonctionnalités telles qu'un lanceur de tests stable, des minuteries de simulation et désormais .envla prise en charge des fichiers, ainsi que de nombreuses autres mises à niveau, correctifs et améliorations. La version 20 devient la version LTS active de Node.js en octobre, c'est donc le bon moment pour tester ces nouvelles fonctionnalités et commencer à penser à mettre à niveau votre application pour en profiter.

Je suppose que tu aimes

Origine blog.csdn.net/jslygwx/article/details/132732621
conseillé
Classement