npm install については誰もが知っていますが、npm ci (クリーン インストール) については知らない人もいるかもしれません。このコマンドは CI 環境で非常に役立ちます。 npm ci を使用すると、ビルド パイプラインがより高速になり、より安定します。これらのコマンドを学習すると、npm install について、また package-lock.json と package.json がなぜそれほど重要なのかを理解するのに役立ちます。これらの基本を理解すると、理解が深まります。
npm ci は、速度と一貫性を重視して、プロジェクトに依存関係をインストールするために使用されるコマンドです。これは、継続的インテグレーション (CI) セットアップで特に役立ちます。
より高速なインストール:
npm ci は package-lock.json の更新をスキップします。ロック ファイルの依存関係に厳密に従い、プロセスをより迅速かつ予測可能にします。
厳密なロック ファイル:
package-lock.json 内の正確な依存関係バージョンを使用します。 package.json と package-lock.json の間に不一致がある場合、エラーがスローされます。これにより、すべての環境 (ローカル、CI、運用環境) で同じ依存関係が使用されるようになります。
白紙の状態:
インストールする前に、npm ci は、新たに開始するために、node_modules フォルダーを削除します。
これは、npm install と npm ci の主な違いを理解することで、多くの隠れた領域を明らかにするクイック リファレンス テーブルです。
ステップ | npm インストール | npm ci |
---|---|---|
1.依存関係の解決 | package.json に基づいて依存関係を解決し、変更を反映するために package-lock.json を更新します。 | バージョン範囲について package.json を参照せずに、package-lock.json 内の正確なバージョンを使用して、解決をスキップします。 |
2.バージョン互換性チェック | 依存関係が package.json 内の指定された範囲を満たしていることを確認し、必要に応じて package-lock.json を更新します。 | package-lock.json 内のバージョンが package.json と正確に一致する必要があります。同期していない場合は失敗します。 |
3. node_modules クリーンアップ | node_modules を削除せずに、欠落しているパッケージまたは更新されたパッケージのみをインストールし、既存の依存関係を変更せずに維持します。 | すべてを新しく再インストールする前に、node_modules を完全に削除します。 |
4.ロックファイルの生成 | 存在しない場合は新しい package-lock.json を生成します。 package.json の変更に基づいて更新されます。 | 既存の package-lock.json が必要で、不足しているか package.json と同期していない場合は失敗します。 |
5. package.json | と同期しますpackage-lock.json を更新して、package.json 内の新規、変更、または削除された依存関係に合わせます。 | package-lock.json は package.json と正確に一致する必要があります。そうでない場合は失敗し、バージョンの厳密な一貫性が確保されます。 |
6.依存関係のインストール | package.json に基づいて依存関係をノードモジュールにインストールし、解決されたバージョンで package-lock.json を更新します。 | package-lock.json で指定されているとおりに依存関係を正確にインストールし、再現性を確保し、package.json のバージョン範囲を無視します。 |
7.ロックファイルの変更 | package.json の変更に合わせて package-lock.json を自動的に変更します。 | package.json の変更に関係なく package-lock.json を変更せず、一貫性を維持します。 |
8.ネットワークリクエスト | node_modules で見つからない新しい依存関係または更新を取得します。 | package-lock.json にリストされている依存関係のみを取得し、追加のチェックをスキップします。 |
9.速度 | 依存関係の解決、潜在的なロックファイルの更新、および増分インストールにより速度が低下します。 | 正確なインストールには package-lock.json のみを使用し、処理を最小限に抑えて高速化します。 |
10.ファイルの優先度 | package.json が優先されます。依存関係はそれに基づいて解決され、package-lock.json は変更を反映して更新されます。 | package-lock.json が優先されます。インストールでは、同期エラー (一致しない場合は失敗) のチェックを除き、package.json を無視して、その正確なバージョンが使用されます。 |
11.理想的な使用例 | 依存関係を変更または追加する場合のローカル開発に最適です。 | CI/CD 環境、運用環境、または一貫性、速度、再現性が重要な場合に最適です。 |
以上がnpm i と npm ciの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。