[解決済み] npm install」と「npm ci」の違いは何ですか?
質問
継続的インテグレーションで作業しているのですが、その際に npm ci コマンドを使用します。
このコマンドを使うことで、私のワークフローにどのような利点があるのかがわからないのです。
速くなるのか? テストが難しくなるのか、大丈夫なのか、後なのか。
解き方は?
からの npmドキュメント :
要するに、npm installとnpm ciを使う場合の主な違いです。
- プロジェクトに既存の package-lock.json または npm-shrinkwrap.json があること。
- パッケージロック内の依存関係が package.json 内の依存関係と一致しない場合、npm ci はパッケージロックを更新するのではなく、エラーで終了します。
- npm ci は一度にプロジェクト全体しかインストールできません。このコマンドで個々の依存関係を追加することはできません。
- node_modules が既に存在する場合、npm ci がインストールを開始する前に自動的に削除されます。
- package.json や package-lock に書き込むことはありません。
本来は。
npm install
は読みます。
package.json
を使用して依存関係のリストを作成し
package-lock.json
を使って、どのバージョンの依存関係をインストールするかを通知します。
依存関係が
package-lock.json
で追加されます。
npm install
.
npm ci
(にちなんで
C
連続
I
ntegration) から直接依存関係をインストールします。
package-lock.json
を使用し
package.json
は、バージョンの不一致がないことを確認するためだけに使用されます。
依存関係が欠けていたり、互換性のないバージョンを持っている場合は、エラーになります。
.
使用方法
npm install
を使用すると、新しい依存関係を追加したり、プロジェクトの依存関係を更新したりすることができます。通常は、開発中に依存関係のリストを更新するような変更を加えた後に使うことになるでしょうが
npm ci
この場合
使用方法
npm ci
決定論的で反復可能なビルドが必要な場合。例えば、継続的インテグレーションや自動化されたジョブなど、また依存関係を初めてインストールする場合、代わりに
npm install
.
npm install
- パッケージとその依存関係をすべてインストールします。
-
依存関係は
npm-shrinkwrap.json
とpackage-lock.json
(の順に)。 - 引数なし : ローカルモジュールの依存関係をインストールします。
- グローバルパッケージのインストールが可能です。
-
で不足している依存関係をインストールします。
node_modules
. -
に書き込むことができる。
package.json
またはpackage-lock.json
.-
引数で使用する場合(
npm i packagename
に書き込むことができます。package.json
を使用して、依存関係を追加または更新します。 -
を引数なしで使用した場合、(
npm i
に書き込むことができます。package-lock.json
を使用して、依存関係がこのファイルにまだない場合は、そのバージョンをロックダウンします。
-
引数で使用する場合(
npm ci
- 少なくともnpmが必要 v5.7.1 .
-
必要なもの
package-lock.json
またはnpm-shrinkwrap.json
が存在することを示します。 -
以下の2つのファイルの依存関係が一致しない場合、エラーをスローします。
package.json
. -
削除
node_modules
をインストールし すべての依存関係 を一度に実行します。 -
に書き込むことはありません。
package.json
またはpackage-lock.json
.
アルゴリズム
一方
npm ci
から依存関係ツリー全体を生成します。
package-lock.json
または
npm-shrinkwrap.json
,
npm install
の内容を更新します。
node_modules
を以下のアルゴリズムで実行します (
ソース
):
load the existing node_modules tree from disk clone the tree fetch the package.json and assorted metadata and add it to the clone walk the clone and add any missing dependencies dependencies will be added as close to the top as is possible without breaking any other modules compare the original tree with the cloned tree and make a list of actions to take to convert one to the other execute all of the actions, deepest first kinds of actions are install, update, remove and move
関連
-
vue-cli レポのダウンロードに失敗しました vuejs-templates/webpack 接続タイムアウトの解決法
-
gulp: コマンドが見つからない 解決する
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] GitHubからnpmパッケージを直接インストールする方法
-
[解決済み] なぜ "npm install" は package-lock.json を書き換えてしまうのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】npm ERR!レジストリエラーのjson解析 - Windows 8でIonic Framework用のCordovaをインストールしようとしているとき
-
[解決済み】ExperimentalWarning: fs.promises APIは実験的です。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
gulp: コマンドが見つからない 解決する
-
[解決済み] Webpack 4 : ERROR in Entry module not found: Error: ./src'を解決できません。
-
[解決済み】npm package.jsonでdevDependenciesからdependenciesにモジュールを移動させる。
-
[解決済み] npm-shrinkwrap.jsonとpackage-lock.jsonの違いは何ですか?
-
[解決済み] npmパッケージのサイズを表示する方法を教えてください。
-
[解決済み] Browserslist: caniuse-lite は古くなっています。次のコマンド `npm update caniuse-lite browserslist` を実行してください。
-
[解決済み] なぜ package-lock.json は整合性ハッシュを sha1 から sha512 に変更したのですか?