npmにpackage-lock.jsonを生成させる方法はありますか?


132

誤って削除してしまい、package.jsonその後多くの変更を加えてきました。npm installまたはnpm update生成されませんpackage-lock.jsonもう。npmキャッシュとnvmキャッシュをクリアしてみましたが、何も動作していないようです。私はNode.jsのいくつかのバージョン(6.10.3 Node.js-3.10.10 npmで動作させたい)で試してみましたが、どのバージョンでも動作しません。

npmにpackage-lock.jsonファイルを生成させる方法はありますか?


2
package-lock.jsonはnpm 5に固有のものだと思います
Brett Merrifield

3
package-lock.json以前のバージョンでは、ロックファイル名はv5以降のnpmでデフォルトで自動的npm-shrinkwrap.jsonに生成され、npm shrinkwrapコマンドを使用して手動で生成されていました。
alexmac

@BrettMerrifieldありがとうございます!それが私の問題でした。私node 8.6.0はそれに更新してそれnpm 5.3.0でうまくいきました。
ビッグマネー

を確認してください.gitignoreどういうわけか私は偶然に持っていpackage-lock.jsonて、.gitignoreそこにpackage-lock.json現れなかったgit statusのでそれは私を失望させていました。
ジョシュアピンター

回答:


155

デフォルトでpackage-lock.jsonは、を実行するたびに更新されますnpm install。ただし、これをで設定することによりpackage-lock=false、グローバルに無効にすることができます~/.npmrc

グローバルpackage-lock=false設定がアクティブな場合でも、次のpackage-lock.jsonコマンドを実行することにより、プロジェクトのファイルを強制的に更新できます。

npm install --package-lock

このコマンドは、package-lock.json更新を強制する唯一の確実な方法です。


@RonNewcombさらに情報を共有できますか?「動かない」とはどういう意味ですか?どのnpmバージョンを使用していますか?
Mathias Bynens 2018

npmバージョン3.10.10ノード6.10.3リストしたコマンドは何もできないようです。何も起こりません。エラーなし、ファイル変更なし、何もありません。
Ron Newcomb 2018

2
プロジェクトにnpm v3を使用している場合、はありませんpackage-lock.jsonpackage-lock.jsonnpm v5 +でのみサポートされています。
Mathias Bynens

8
npm v 6.4.1、これはpackage-lock.jsonを作成しません
mjuopperi

1
6.4.1では、私にとってはうまくいきます。また、falseに設定すると、作成されなくなります。
Kevin B

94

npm 6.xで使用できます

npm i --package-lock-only

https://docs.npmjs.com/cli/install.htmlによると

--package-lock-only引数は、node_modulesをチェックして依存関係をダウンロードする代わりに、package-lock.jsonのみを更新します。


12
これが正解です。他の人は古くて機能しません。
Vaibhav Singh

devDependenciesなしでpackage-lock.jsonを生成する手がかりはありますか?クリーンプロダクションインストールにはこれが必要です。 npm i --package-lock-only --only=production動作していないようです。
ロバート

package-lock.json本番環境の依存関係のみを生成することは不可能だと思います。ただし、実行したnpm i --only=production場合は、本番環境の依存関係のみがインストールされます。したがって、ビルドプロセスは次のようになります。すべての依存関係をインストールし、アプリをビルドし、node_modules製品の依存関係のみを削除してインストールします。
Janusz Przybylski

14

これはコメントで回答されています。v5以降のpackage-lock.json機能npmです。npm shrinkwrapは、のすべてのバージョンでロックファイルを作成する方法ですnpm


1
ただし、package-lock.jsonsはシュリンクラップファイルとまったく同じではないことに注意してください。
18年

7
npm 5+では、実際にはまったく同じですが、細かいところまですべて同じですnpm-shrinkwrap.jsonが、レジストリに公開されるだけで、公開されpackage-lock.jsonません。
LJHarb 2018年

6
うん。ただし、これはかなり重要な違いです。そのため、コメントを残しました。
闘争

1
npm shrinkwrap生成npm-shrinkwrap.jsonしますが、どのように生成しpackage-lock.jsonますか?
Vic

5
それはnpm 5+で自動です、またはあなたはそれを5+で強制することができます--package-lock
LJHarb

1

いくつかの答えが説明したように、実行する必要があります:

npm i

しかし、それが解決しない場合...

npm実行可能ファイルのバージョンを確認してください。(私にとってはpackage-lock.json(まったく)使用しない3.xxでした)

npm -v

少なくとも5.xxでなければなりません(package-lock.jsonファイルが導入されています)。

Lunixでnpmを更新するには、次手順に従っください。

詳細については、この中級のストーリーのパッケージファイルをお読みください。


0

あなたの場合はNPMバージョンが低いよりもバージョン5、その後の自動生成取得するために高いバージョンをインストールするパッケージlock.jsonを

例:現在のnpmをバージョン6.14.0にアップグレードする

npm i -g npm@6.14.0

次の方法で最新のnpmバージョンリストを表示できます

npm view npm versions

-3

package-lock.jsonは、を実行するたびに再生成されますnpm i


13
これは、nodeおよびの特定のバージョンにのみ当てはまりますnpmnpm> = 5.0node> = だと思います7.0が、100%確実ではありません。私にはうまくnode 6.11.3いきません。
Thor84no

2
npm構成でパッケージロックがfalseに設定されている場合もtrueになりません。'npm config list'を使用して確認
Damo

package-lock.jsonは、npmがnode_modulesツリーまたはpackage.jsonを変更する操作に対して自動的に生成されます。docs.npmjs.com/files/package-lock.jsonに従ってください 。ただし、npmバージョンは指定されていません。
NanoNova
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.