[解決済み] npmが特定のフォーマットを使用するようにpackage-lock.json lockfileVersionを修正する方法はありますか?
質問
2人の開発者が異なるバージョンのnode (12/15) & npm (6/7)を使っている場合、そのプロジェクトではもともと
package-lock.json
"lockfileVersion": 1
を使用する開発者が新しいパッケージをインストールした場合、そのパッケージは
package-lock.json
を使用して再作成されます。
"lockfileVersion": 2
.
これは、npm v6 を使用している開発者にとって問題が発生するようです。
lockfileVersion 2
が、結局は新しい diff を生成してしまいます。
npm WARN read-shrinkwrap このバージョンのnpmはlockfileVersion@1に対応していますが、package-lock.jsonはlockfileVersion@2用に生成されました。これで頑張ってみます!
の新しいバージョンに指定する方法はありますか?
npm
に
のみ
使用
"lockfileVersion": 1
? それとも、すべての開発者が同じバージョンの
npm
?
解決方法は?
<ブロッククオート
の新しいバージョンに指定する方法はありますか?
npm
のみを使用するように
"lockfileVersion": 1
? それとも、すべての開発者が同じバージョンの
npm
?
Node/NPMのバージョンを固定し、環境(開発、ステージング、本番)間で整合させるようアドバイスします。
を利用することができます。
nvm
をプロジェクトに追加することで、ノードのバージョンを管理することができます。
.nvmrc
ファイルを作成します (ソース管理に保存することを忘れないでください)。
例えば
.nvmrc
は次のようになります。
$ cat .nvmrc
14.15.0
とすると
nvm install && nvm use
を使用すると、Nodeのパインされたバージョンを使用することができます。
また、NPMは
engines
:
あなたのものが動作するnodeのバージョンを指定することができます。
{ "engines" : { "node" : ">=0.10.3 <0.12" } }
また、依存関係の場合と同様に、バージョンを指定しない場合(またはバージョンとして "*"を指定した場合)には、どのバージョンのNodeでもかまいません。
npm は "engines" フィールドを指定すると、そのリストのどこかに "node" があることを要求します。もし "engines" が省略された場合、npm は単に Node で動作すると仮定します。
また、"engines" フィールドを使用して、あなたのプログラムを適切にインストールできる npm のバージョンを指定することができます。例えば
{ "engines" : { "npm" : "~1.0.20" } }
ユーザーが engine-strict 設定フラグをセットしていない限り、このフィールドは勧告的なもので、あなたのパッケージが依存関係としてインストールされたときにのみ警告を生成します。
別のアプローチとして Dockerコンテナ を開発および実行のための実行環境として使用することで、NodeやNPMをインストールする必要がありません。
$ mkdir my-project
$ cd my-project
$ docker run --rm -it -v $PWD:/app --entrypoint /bin/bash --workdir /app node:14.15.0
root@4da6ee3c2ac0:/app# npm init -y
Wrote to /app/package.json:
{
"name": "app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
root@4da6ee3c2ac0:/app# npm install
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
up to date in 1.694s
found 0 vulnerabilities
root@4da6ee3c2ac0:/app# exit
exit
$ ls -x1
package-lock.json
package.json
見ての通り、NodeでもNPMでもない。
- 新しいプロジェクト用に新しいディレクトリを作成
- NodeとNPMが同梱されたNode Dockerコンテナをスピンアップします。
-
新しいプロジェクトを作成し (
npm init -y
) - Dockerコンテナを終了させる
- コンテナを起動した作業ディレクトリ内のファイルを一覧表示します。
というのは
docker run
のコマンドは長いので、このコマンドを利用するとよいでしょう。
ドッカーコンポーズ
を使えば、より合理的なワークフローが実現できます。
関連
-
[解決済み】mongoError: トポロジーが破壊されました
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] AWS s3 api error: specified bucket does not exist.
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] DynamoDBで一括削除するにはどうしたらいいですか?
-
[解決済み] なぜ "npm install" は package-lock.json を書き換えてしまうのですか?
-
[解決済み] [Solved] npmが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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】mongoError: トポロジーが破壊されました
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
[解決済み】npx コマンドが見つかりません。
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み】POSTできない/expressを使用するとエラーが発生する
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] Express.js req.bodyが未定義です。
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。