Node.js 20.6 は .env 構成ファイルをサポートし、C++ ガベージ コレクション ライブラリ Oilpan を追加します

最新バージョン 20.6.0では、Node.js にファイルのサポートが組み込まれています.env完全に依存関係なしに、.envファイルから Node.js アプリケーションに環境変数を読み込むことができるようになりました。process.env

ファイルのロードが.env非常に簡単になりました。

node --env-file .env

.envとは何ですか?

.envファイルは、実行中のアプリケーションに存在する環境変数を構成するために使用されます。このアイデアは、デプロイメント (開発、ステージング、運用など) 間で異なる可能性があるすべてのものを環境に保存するという12要素アプリケーション アプローチから来ています。

構成はアプリケーション コードの一部であってはならず、バージョン管理にチェックインされるべきでもありません。API 資格情報やその他のシークレットのようなものは、個別に保存し、それらを必要とする環境にロードする必要があります。ファイルを使用すると、.env環境内で変数を設定することが現実的でないアプリケーション (開発マシンや CI など) の構成を管理できます。

.envファイルを使用して環境に変数を読み込むことをサポートするライブラリがさまざまな言語で存在しており、それらは「dotenv」と呼ばれることが多く、 Node.js dotenvも例外ではありません。しかし現在、Node.js はこの動作をネイティブにサポートしています。

Node.js で .env を使用するにはどうすればよいですか?

ファイルは.env次のようになります。

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

慣例により、これを.envプロジェクトのルートに保持しますが、任意の名前を付けることができます。

--env-fileその後、Node.js を起動し、フラグをファイルに指定することで、ファイル内の変数を環境変数として設定できます.envロード時に、変数を属性として使用できます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

サポートされている機能

現在のサポートはdotenvに比べてかなり基本的です例えば:

  • 現在、複数行の値は使用できません
  • 変数展開は使用できません
  • 一度に指定できるファイルは 1 つだけです。Node.js は渡された最後のフラグのみを使用するため、次の例では from.env.development変数のみが使用されます。
node --env-file .env --env-file .env.development

やるべきことはまだたくさんあり、これらの機能のいくつかが追加される可能性があります。ここで GitHub のディスカッションをフォローできます

欠点がある

バージョン 20.6.0 の時点で、ドキュメントには「同じ変数が環境とファイルで定義されている場合、環境の値が優先されます。これがすべての dotenv パッケージのデフォルトの動作方法です。ただし、これは当てはまりません」と記載されています。 Node.js の現在の実装では、ファイル内の変数が.env環境をオーバーライドするため、この問題を修正するためのPR リクエストがあります。

Node.js実装のメリット

この実装にはいくつかの機能が欠けていますが、サードパーティのパッケージを使用する場合に比べていくつかの利点があります。Node.js は起動時にファイルをロードして解析するため、 Node 自体を構成する環境変数を.env含めることができますNODE_OPTIONS

.envしたがって、次のようなファイルを作成できます。

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

その後node --env-file=.env、それを実行すると、警告なしでプロセスが実行され、127.0.0.1:9229IP アドレスのチェッカーがアクティブになります。

注: を入力することはできませんNODE_OPTIONS="--env-file .env"無限ループを避けてください。

C++ ガベージ コレクション ライブラリ Oilpan

さらに、Node.js C++ 拡張スイートは、V8 の C++ ガベージ コレクション ライブラリである Oilpan をサポートするようになり、C++ と JavaScript の間でオブジェクトとリソースをより適切に統合および管理するための新しいツールとガイダンスを開発者に提供します。つまり、20.6 以降、Node.js には斬新で効率的な C++ メモリ管理メソッドが追加されていますが、元のメソッドも引き続き使用できます。

V8 チームは 2021 年に Oilpan をリリースしましたが、その特徴は、オブジェクトをマークすることで生きているオブジェクトを識別し、リサイクル段階で死んだオブジェクトをリサイクルできる追跡ガベージ コレクション メカニズムを提供することです。Oilpan は、特定のオブジェクトのヒープの断片化もサポートしています。全体として、Oilpan はプログラム開発モデルを簡素化し、メモリ リークと使用後のリリースの問題の解決に役立ちます。

Node.js アプリケーション用の C++ 拡張キットを作成する開発者は Oilpan を使用することもできますが、公式の注意事項として、Node.js は V8 の Oilpan 関数ライブラリのみをパッケージ化しており、ABI (アプリケーション バイナリ インターフェイス) の安定性は保証できません。オイルパンは長年にわたってクロムでテストされてきたため、ABI を破る可能性は低いと考えられています。その後、オイルパンが外部および内部で十分な採用を獲得した場合、当局はそれをABIの安定性保証に含めることを検討する予定です。

Node.js 20.6 では、モジュール システムに新しい API も追加され、開発者がファイルを指定してモジュール フックをカスタマイズするための新しいメソッドが提供されます。この新しい機能は、開発者がモジュールの読み込みと解析の動作をカスタマイズし、メイン アプリケーション実行スレッドとカスタム フック実行スレッド間の通信チャネル。

Node.js は常に改善されています

Node.js バージョン 20.6.0 を試してみてください。バージョン 20 では、安定したテスト ランナー、シミュレーション タイマー、ファイル サポートなどの新機能のほか、.envその他多くのアップグレード、修正、改善が行われています。10 月にバージョン 20 が Node.js のアクティブな LTS バージョンになるため、今がこれらの新機能をテストし、アプリケーションをアップグレードして活用することを検討し始めるのに良い時期です。

おすすめ

転載: blog.csdn.net/jslygwx/article/details/132732621