JavaScriptやNode.jsプロジェクトでは、パッケージ管理ツールとして多くの場合、npm
(Node Package Manager)が使われます。通常、npm install
やnpm ci
を使って、開発時に必要なすべてのパッケージをインストールします。
しかし、本番環境にデプロイする際などは開発時のみ必要なパッケージ(devDependencies
)を除外してdependencies
のみをインストールしたい場合があります。
この記事では本番(production)環境で必要なパッケージ(dependencies)のみをインストール方法をわかりやすく解説します。
dependenciesのみするインストール方法
dependencies
のみインストール方法には以下の方法があります。全ての方法でdependencies
のみインストールできますが、方法2と方法3は非推奨です。
- 方法1:
--omit=dev
オプションを用いる方法(推奨) - 方法2:
--only=prod
オプションを用いる方法(非推奨) - 方法3:
--production
オプションを用いる方法(非推奨) - 方法4: 環境変数
NODE_ENV
を設定する方法
--omit=devオプションを用いる方法(推奨)
--omit=dev
オプションを使用すると、環境変数NODE_ENV
に関係なく、devDependencies
を除外してdependencies
のみをインストールすることができます。
# package.json を基にインストールする場合
npm install --omit=dev
# package-lock.json を基にインストールする場合
npm ci --omit=dev
補足
npm v8以降ではこの--omit=dev
オプションが推奨されています。npm v6以前ではこの後に説明するnpm install --only=prod
を用いて、npm v3.3.0以前ではnpm install --production
を用いていたみたいです。
npmバージョン | 使用方法 | 推奨状況 |
---|---|---|
v8以降 | --omit=dev | 推奨 |
v6以前 | --only=prod | 非推奨 |
v3.3.0以前 | --production | 非推奨 |
--only=prodオプションを用いる方法(非推奨)
以前は--only=prod
オプションを使用して、dependencies
のみをインストールするのが一般的でしたが、現在は非推奨です。
# package.json を基にインストールする場合
npm install --only=prod
# package-lock.json を基にインストールする場合
npm ci --only=prod
--only=prod
は--omit=dev
のエイリアスでありDEPRECATEDです。以下のドキュメントにも記載されています。
npm公式ドキュメント: only
only
- DEPRECATED: Use
--omit=dev
to omit dev dependencies from the install.- When set to
prod
orproduction
, this is an alias for--omit=dev.
実際に--only=prod
オプションを使用してインストールしてみると、--omit=dev
を使用するように推奨されます。
$ npm install --only=prod
npm WARN config only Use `--omit=dev` to omit dev dependencies from the install.
--productionオプションを用いる方法(非推奨)
以前は--production
オプションを使用して、dependencies
のみをインストールするのが一般的でしたが、現在は非推奨です。
# package.json を基にインストールする場合
npm install --production
# package-lock.json を基にインストールする場合
npm ci --production
--production
も--omit=dev
のエイリアスでありDEPRECATEDです。以下のドキュメントにも記載されています。
npm公式ドキュメント: production
production
- DEPRECATED: Use
--omit=dev
instead.- Alias for
--omit=dev
実際に--production
オプションを使用してインストールしてみると、--omit=dev
を使用するように推奨されます。
$ npm install --production
npm WARN config production Use `--omit=dev` instead.
環境変数NODE_ENVを設定する方法
環境変数NODE_ENV
をproduction
に設定すると、dependencies
のみをインストールすることができます。
# package.json を基にインストールする場合
NODE_ENV=production npm install
# package-lock.json を基にインストールする場合
NODE_ENV=production npm ci
NODE_ENV
はNode.js自体にも影響を与える環境変数であるため、設定を適切に行わないと動作に問題を引き起こす可能性があります。
本記事のまとめ
この記事では本番(production)環境で必要なパッケージ(dependencies)のみをインストール方法について、説明しました。
--omit=dev
オプションを用いてdependencies
のみをインストールするのが推奨されている。- 環境変数
NODE_ENV=production
を利用する方法もあるが注意が必要。
お読み頂きありがとうございました。