npm は Node.js とともに配布されるパッケージマネージャーです。パッケージのインストール、 プロジェクトスクリプトの実行、レジストリへのパッケージ公開、依存関係の解決結果の記録を 行い、チームがアプリケーションのビルドを再現できるようにします。
パッケージメタデータ #
すべての npm プロジェクトは package.json で記述します。最も重要なフィールドは、
パッケージを識別し、スクリプトを定義し、依存関係を宣言します。
{
"name": "example-service",
"private": true,
"type": "module",
"scripts": {
"test": "node --test",
"start": "node src/server.js"
},
"dependencies": {
"fastify": "^5.0.0"
},
"devDependencies": {
"typescript": "^5.0.0"
},
"engines": {
"node": ">=20"
}
}dependencies は本番環境で必要です。devDependencies は開発、テスト、ビルドを支援
します。private: true とマークされたパッケージは誤って公開できません。
type フィールドは .js ファイルの解釈方法を制御します。"module" は ECMAScript
モジュールを選択し、省略時はデフォルトの CommonJS 動作が適用されます。両方のモジュール
システムをサポートするパッケージでは、exports フィールドを使用して意図した公開
エントリポイントを公開できます。
バージョン範囲とロックファイル #
npm のバージョンはセマンティックバージョニング、つまり major.minor.patch に従います。
^5.2.1 のようなキャレット範囲は、次のメジャーリリース前の互換性のあるマイナーおよび
パッチ更新を許可し、~5.2.1 のようなチルダ範囲はパッチ更新だけを許可します。厳密な
バージョンは最も強い制約になります。
package.json は許可される範囲を表し、package-lock.json は npm が解決した正確な依存
関係ツリーを記録します。アプリケーションでは両方をコミットし、継続的インテグレーション
では npm ci を使用してください。npm install と異なり、npm ci はロックファイルが
マニフェストと一致することを要求し、クリーンで固定されたツリーをインストールします。
npm install
npm run test
npm ci
npm outdated
npm updateスクリプトと実行可能ファイル #
npm run <script> は scripts フィールドのコマンドを実行し、node_modules/.bin の
ローカル実行可能ファイルを PATH に追加します。これにより、グローバルインストールを
要求せずに npm run lint を移植可能な形で実行できます。-- の後に引数を渡します。
npm run test -- --watch一時的なコマンド実行には npx <package> または npm exec <package> を使用します。
コントリビューターや CI が繰り返し実行するコマンドには、プロジェクトの依存関係と
スクリプトを優先してください。
レジストリと公開 #
デフォルトは公開 npm レジストリですが、.npmrc でスコープ用のレジストリを選択できます。
@acme:registry=https://registry.example.com/特に CI では、リポジトリ外で管理するトークンで認証します。ライブラリを公開する前に、
files、.npmignore、exports、ライセンス、生成された tarball を確認してください。
npm pack --dry-run
npm publishライブラリは意図したランタイムファイルだけを公開し、サポートする Node.js バージョンを 文書化してください。アプリケーションは通常、非公開のまま公開せずにデプロイします。
コメント
GitHub で閲覧・コメントする(投稿にはログインが必要です)