npm i と npm ci

Patricia Arquette
リリース: 2024-11-28 16:02:11
オリジナル
215 人が閲覧しました

npm i vs npm ci

npm install については誰もが知っていますが、npm ci (クリーン インストール) については知らない人もいるかもしれません。このコマンドは CI 環境で非常に役立ちます。 npm ci を使用すると、ビルド パイプラインがより高速になり、より安定します。これらのコマンドを学習すると、npm install について、また package-lock.json と package.json がなぜそれほど重要なのかを理解するのに役立ちます。これらの基本を理解すると、理解が深まります。

npm ci(クリーンインストール)とは何ですか?

npm ci は、速度と一貫性を重視して、プロジェクトに依存関係をインストールするために使用されるコマンドです。これは、継続的インテグレーション (CI) セットアップで特に役立ちます。

npm installとどう違うのですか?

  • より高速なインストール:

    npm ci は package-lock.json の更新をスキップします。ロック ファイルの依存関係に厳密に従い、プロセスをより迅速かつ予測可能にします。

  • 厳密なロック ファイル:

    package-lock.json 内の正確な依存関係バージョンを使用します。 package.json と package-lock.json の間に不一致がある場合、エラーがスローされます。これにより、すべての環境 (ローカル、CI、運用環境) で同じ依存関係が使用されるようになります。

  • 白紙の状態:

    インストールする前に、npm ci は、新たに開始するために、node_modules フォルダーを削除します。

いつ使用するか?

  • CI/CD パイプライン: 更新を行わずに高速で一貫性のあるインストールが必要な自動ビルド システムに最適です。
  • 信頼されたロック ファイル: 依存関係を package-lock.json で定義されているものと正確に一致させる場合に使用します。

これは、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.jsonpackage-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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート