我可以从 package-lock.json 重新创建 node_modules 吗?

jks*_*ksy 5 npm npm-install package-lock.json

我从 github 克隆了一个存储库,它有一个 package-lock.json(但没有 package.json)。然后在 git bash 终端中,我转到目录并运行,npm install但我只是收到一条消息,说没有 package.json 然后 package-lock.json 中的所有内容都被删除,因此除了项目名称和版本外,它基本上是空的。

我认为npm install在目录中运行package-lock.json 足以重新创建 node_modules,但我是否严重误解了它是如何工作的?顺便说一句,我有节点 8.12.0 和 npm 6.4.1 并且正在 Windows 10 上运行。此外,我认为 package-lock.json 是在 unix 系统上创建的,因此在使用 package-lock.json 时可能会出现问题不同的操作系统?

我已经尝试运行npm init只是为了获取 package.json 文件然后运行npm install但仍然没有让我获得 node_modules 文件夹。

Jac*_*ang 5

从 2018 年 3 月 5 日开始,您可以运行npm cipackage-lock.json 来安装软件包。

\n\n
\n

npm ci 绕过 package\xe2\x80\x99s package.json 从 package\xe2\x80\x99s 锁定文件安装模块。

\n
\n\n

https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable

\n

  • `npm ci` 会比较 `package.json` 和 `package-lock.json`,因此如果 `package.json` 不存在,它会拒绝运行。 (2认同)

Jam*_*ard 3

AFAIK,该package-lock.json文件依赖于文件的存在package.json,因此您将无法node_modules仅从该文件重新创建文件夹package-lock.json(很高兴在这里被证明是错误的)。

因此,最好的选择是(错误地)使用像自动安装这样的模块,该模块能够package.json根据项目的依赖项生成文件,就像它们出现在文件中一样。

全局安装它 ( npm install -g auto-install),然后您需要生成一个空package.json文件才能运行(npm init -y在项目根目录中使用)。使用命令开始auto-install,它应该将依赖项添加到package.json文件中。

华泰