javascript - モジュールの利用者や消費者から内部専用のモジュールを隠す方法は?
私はいくつかの Node パッケージを ES モジュールを使って作成しています。外部用(つまり外部のパッケージで使用される)であるはずのモジュールもあれば、特定のモジュールのエクスポートが私のパッケージ専用の内部用であるものもあります。
私の知る限り、ESモジュールで特定のモジュールを内部専用として示す方法はありません。しかし、ユーザーが内部専用モジュールを使用するのを防ぐために、Nodeパッケージを開発する際に従う標準的な慣行やガイドラインはありますか?
私がこれを必要とする理由は、私のパッケージがTypeScriptで書かれており、TypeScriptが自動的に宣言ファイルを生成するためであり、その宣言ファイルには内部的に意図されたモジュールのエクスポートも含まれるからです。
回答 #1
Node v18+ の時点で、新しいパッケージ exports フィールドにより、これが可能になりました。exports フィールドを使用すると、エクスポートするモジュールの正確なリストを指定できます:
{
"name: "my-package",
"version": "1.0.0",
"exports": {
".": "./dist/main.js",
"./common": "./dist/common.js",
"./other.js": "./dist/other.js"
}
}
Node.jsのESM実装では拡張子が必要であるため、正確である必要があります。上記の構成では、消費するアプリケーションで次のインポートがサポートされます:
// Corresponding to `.`
import {} from 'my-package';
// Corresponding to `./common`
import {} from 'my-package/common';
// Corresponding to `./other.js`
import {} from 'my-package/other.js
