dependencies と devDependencies の使い分け:node.js プロジェクトのバージョン管理
node.js, npm, save における --save と --save-dev の違い
概要
オプション | 説明 | 対象 | インストール先 |
---|---|---|---|
--save | プロジェクトの動作に必要なパッケージをインストール | 開発者と利用者 | dependencies |
--save-dev | 開発時にのみ必要なパッケージをインストール | 開発者のみ | devDependencies |
詳細
--save
- プロジェクトの動作に必須なパッケージをインストールします。
- 開発者だけでなく、利用者もインストールする必要があります。
package.json
のdependencies
フィールドに登録されます。
--save-dev
- 利用者はインストールする必要はありません。
例
- ライブラリ
express
をプロジェクトの動作に必須として使用する場合
npm install express --save
- 開発時にのみ使用するテストフレームワーク
mocha
をインストールする場合
npm install mocha --save-dev
注意事項
npm v5
以降では、デフォルトで--save
オプションが使用されます。--save
と--save-dev
は同時に使用できます。- どちらを使用するべきか迷った場合は、
--save-dev
を使用するのが安全です。
{
"name": "my-project",
"version": "1.0.0",
"description": "My awesome project",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"keywords": ["node", "javascript"],
"author": "Bard",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"mocha": "^8.4.0",
"chai": "^4.3.4"
}
}
index.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, world!');
});
app.listen(3000, () => {
console.log('App listening on port 3000');
});
実行
npm install
npm start
ブラウザで http://localhost:3000
を開くと、「Hello, world!」と表示されます。
説明
- 上記のコードでは、
express
パッケージは--save
オプションでインストールされています。これは、express
がプロジェクトの動作に必須であるためです。 mocha
とchai
は開発時にのみ使用するテストフレームワークなので、--save-dev
オプションでインストールされています。
- 上記は簡単な例です。実際のプロジェクトでは、より多くのパッケージを使用する可能性があります。
- 各パッケージの詳細については、npm のドキュメントを参照してください。
--save と --save-dev の代替方法
手動で package.json を編集する
dependencies
またはdevDependencies
フィールドに、インストールしたいパッケージの名前とバージョンを直接記述します。
npm link を使用する
- ローカルのパッケージをインストールする際に使用します。
Yarn を使用する
- Yarn は npm の代替パッケージマネージャーです。
- Yarn では、
--prod
と--dev
フラグを使用して、dependencies
とdevDependencies
を区別できます。
その他のツールを使用する
- npm-run-all や concurrently などのツールを使用して、複数の npm コマンドをまとめて実行できます。
これらの方法は、それぞれメリットとデメリットがあります。自分に合った方法を選択してください。
- メリット:
- デメリット:
- ミスをしやすい
- バージョン管理が難しい
- メリット:
- デメリット:
- デメリット:
- メリット:
- 複数の npm コマンドをまとめて実行できる
- タスクを自動化できる
- デメリット:
- 上記の方法を使用する前に、それぞれの方法の詳細をよく理解してください。
- 間違った方法を使用すると、プロジェクトが動作しなくなる可能性があります。
node.js npm save