nodejs の package.json における "private" プロパティ:詳細ガイド
node.js の package.json における "private" プロパティの役割
値が "true"の場合
- 個人用のライブラリや、特定のプロジェクト内でのみ利用するツールなど、公開する必要のないパッケージを定義する際に役立ちます。
- ローカル開発でのみ利用することを想定したパッケージに使用されます。
- そのパッケージは 公開されず、
npm publish
コマンド等で公開レジストリに登録することはできません。
値が "false"の場合 (デフォルト)
- オープンソースライブラリや、他の開発者と共有したいツールなど、広く利用されることを目的としたパッケージを定義する際に適しています。
- npm ユーザーは、
npm install
コマンド等でパッケージをインストールし、利用することができます。
"private" プロパティの利点
- ソースコードを公開せずに、パッケージの機能のみを提供したい場合に役立ちます。
- 開発中のパッケージや、テスト用のパッケージなどを公開せずに管理することができます。
- 公開されるべきではないパッケージを誤って公開してしまうことを防ぎます。
- Yarn パッケージマネージャーでも同様の "private" プロパティが利用可能です。
- "private" プロパティは、依存関係にあるパッケージにも影響を与えます。 "private" プロパティが "true" のパッケージを依存関係に持つパッケージは、それ自体も "private" とみなされます。
- "private" プロパティは、
npm install
コマンドを実行する際に--public
オプションを指定することで、一時的に無効化することができます。
{
"name": "my-private-package",
"version": "1.0.0",
"description": "My private package",
"private": true,
"scripts": {
"test": "echo \"Running tests\""
}
}
"private" プロパティが "false" の場合
{
"name": "my-public-package",
"version": "1.0.0",
"description": "My public package",
"keywords": ["node", "javascript"],
"author": "Your Name <[email protected]>",
"license": "MIT",
"repository": "https://github.com/you/my-public-package",
"scripts": {
"test": "echo \"Running tests\"",
"start": "node index.js"
}
}
- ただし、この方法は Git を利用していない場合や、一部のファイルのみを非公開にしたい場合に適していない場合があります。
.gitignore
ファイルに、公開したくないファイルやディレクトリをリストアップすることで、Git リポジトリに含めずに済みます。
例
# .gitignore ファイル
node_modules/
.env
dist/
環境変数を使用する
- ただし、この方法はコマンドラインでの操作が必要となるため、やや煩雑です。
npm_config_private
環境変数を設定することで、特定のパッケージを非公開にすることができます。
npm config set npm_config_private true
npm publish
Yarn ワークスペースを使用する
- ワークスペース内のパッケージを非公開にするには、
private
フィールドをtrue
に設定します。 - Yarn ワークスペースを使用すると、プロジェクト内のパッケージを個別に管理することができます。
# package.json
{
"workspaces": [
"packages/*"
]
}
カスタムレジストリを使用する
- この方法は、チーム内でのみ利用するパッケージなどを共有する場合に有効です。
- 公開レジストリではなく、プライベートなレジストリにパッケージを公開することができます。
node.js package.json