[解決済み] npm-shrinkwrap.jsonとpackage-lock.jsonの違いは何ですか?
質問
とは
npm@5 のリリース
を記述するようになりました。
package-lock.json
がなければ
npm-shrinkwrap.json
が既に存在する。
経由でnpm@5をグローバルにインストールしました。
npm install npm@5 -g
そして今、もし
npm-shrinkwrap.json
の間に発見される。
npm install
という警告が表示されます。
npm WARN read-shrinkwrap This version of npm
is compatible with lockfileVersion@1,
but npm-shrinkwrap.json was generated for lockfileVersion@0.
I'll try to do my best with it!
つまり、私が得た情報は、シュリンクラップを
package-lock.json
.
それなのに、なぜ新しいフォーマットがあるのでしょうか。は何ができるのでしょうか?
package-lock.json
は、その
npm-shrinkwrap.json
はできないのですか?
どのように解決するのですか?
この2つのファイルは全く同じ内容ですが、npmの処理方法にはいくつかの違いがあります。 パッケージロック.json と npm-shrinkwrap.json :
-
package-lock.json
は決して npm にパブリッシュされないのに対しnpm-shrinkwrap
はデフォルトで -
package-lock.json
トップレベルパッケージに含まれないファイルは無視されますが、依存関係にある shrinkwrap ファイルは尊重されます。 -
npm-shrinkwrap.json
はnpmのバージョン2、3、4と後方互換性があるのに対しpackage-lock.json
は npm 5+ でしか認識されません。
既存の
package-lock.json
を
npm-shrinkwrap.json
を実行することで
npm shrinkwrap
.
このように
-
npmにパッケージを公開しないのであれば、この2つのファイルの選択はあまり重要ではありません。この場合
package-lock.json
というのも、この名前はデフォルトであり、npm の初心者にもわかりやすいからです。npm-shrinkwrap.json
開発チームの全員がnpm 5+を使用していることを確認するのが困難な場合、npm 2-4との後方互換性を確保するため。(なお、npm 5は2017年5月25日にリリースされました。後方互換性はその日から遠ざかれば遠ざかるほど、ほとんどの人がいずれアップグレードするため、あまり重要ではなくなります)。 -
もし、あなたが は パッケージをnpmに公開する場合、次のどちらかを選択することになります。
-
を使用しています。
package-lock.json
を使用してインストールした依存関係のバージョンを正確に記録しますが、 あなたのパッケージをインストールする人は、あなたのpackage.json
または -
を使用しています。
npm-shrinkwrap.json
を使うことで、あなたのパッケージをインストールするすべての人に まさに すべての依存関係が同じバージョンであること
ドキュメントに書かれている公式見解は、ライブラリにはオプション1を使うべきで (おそらく、あるパッケージの多くの依存関係がすべて同じ二次依存関係のわずかに異なるバージョンに依存している場合に生じるパッケージの重複の量を減らすために)、グローバルにインストールされる実行ファイルにはオプション2が妥当かもしれない、というものです。 -
を使用しています。
関連
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
エラーを解決する。ENOENT: no such file or directory, scandir install node-sass error.
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] sudoを使わずにnpmがエラーを投げるのを修正する方法
-
[解決済み] なぜ "npm install" は package-lock.json を書き換えてしまうのですか?
-
[解決済み] npmが特定のフォーマットを使用するようにpackage-lock.json lockfileVersionを修正する方法はありますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
レポート:spawn cmd ENOENTエラーの起動に失敗しました。
-
[解決済み] Webpack 4 : ERROR in Entry module not found: Error: ./src'を解決できません。
-
[解決済み] yarn runとnpm startの違いは何ですか?
-
[解決済み] Yarnの "npm install -save "に相当するものは何ですか?
-
[解決済み] なぜ "npm install" は package-lock.json を書き換えてしまうのですか?
-
[解決済み] package-lock.jsonの役割は何ですか?
-
[解決済み] 与えられたnpmモジュールの依存関係ツリーを表示する方法は?
-
[解決済み] npmパッケージのサイズを表示する方法を教えてください。
-
[解決済み] Module not found: Error: Can't resolve 'core-js/es6'.
-
[解決済み] npm install で --save フラグは何をするのですか?