我可以从 package-lock.json 重新创建 node_modules 吗?
Can I re-create node_modules from package-lock.json?
我从 github 克隆了一个存储库,它有一个包-lock.json(但没有 package.json)。然后在 git bash 终端中,我转到目录和 运行 npm install
但我只收到一条消息说没有 package.json 然后包中的所有内容-lock.json 被删除,所以除了项目名称和版本之外,它基本上是空的。
我认为 运行ning npm install
目录中的 package-lock.json 足以重新创建 node_modules,但我是否严重误解了它的工作原理?顺便说一句,我有 node 8.12.0 和 npm 6.4.1,并且 运行ning 在 Windows 10 上。另外,我认为 package-lock.json 是在 unix 系统上创建的,所以可以在不同的 OS?
上使用 package-lock.json 时会出现问题
我已经尝试 运行ning npm init
只是为了获得一个 package.json 文件,然后 运行ning npm install
但这仍然没有得到我node_modules 个文件夹。
据我所知,package-lock.json
文件依赖于 package.json
文件的存在,因此您将无法从 package-lock.json
重新创建 node_modules
文件夹单独的文件(很高兴在这里被证明是错误的)。
因此,最好的办法是(误)使用像 auto-install 这样的模块,它能够根据项目的依赖项生成 package.json
文件,因为它们出现在文件中。
全局安装它(npm install -g auto-install
),然后你需要为它生成一个空的package.json
文件到运行(在你的项目根目录中使用npm init -y
).使用命令 auto-install
开始,它应该将依赖项添加到 package.json
文件。
HTH
从 2018 年 3 月 5 日开始,您可以运行 npm ci
从 package-lock.json 安装软件包。
npm ci bypasses a package’s package.json to install modules from a
package’s lockfile.
https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable
package-lock.json
记录了确切的版本和 url 需要安装的软件包,因此您可以使用 npm 相应地安装它们:
- npm 可以从 url 指向 tarballs 的文件安装
--no-package-lock
选项告诉 npm 不要触及 package-lock.json
文件
例如,要安装 package-lock.json
中的所有软件包:
cat package-lock.json | jq '.dependencies[].resolved' | xargs npm i --no-package-lock
jq
是paresjq
的命令行工具,你可以写一个简单的JavaScript脚本来解析它(如果你不想安装jq
或学习 jq 的查询语法)。
我从 github 克隆了一个存储库,它有一个包-lock.json(但没有 package.json)。然后在 git bash 终端中,我转到目录和 运行 npm install
但我只收到一条消息说没有 package.json 然后包中的所有内容-lock.json 被删除,所以除了项目名称和版本之外,它基本上是空的。
我认为 运行ning npm install
目录中的 package-lock.json 足以重新创建 node_modules,但我是否严重误解了它的工作原理?顺便说一句,我有 node 8.12.0 和 npm 6.4.1,并且 运行ning 在 Windows 10 上。另外,我认为 package-lock.json 是在 unix 系统上创建的,所以可以在不同的 OS?
我已经尝试 运行ning npm init
只是为了获得一个 package.json 文件,然后 运行ning npm install
但这仍然没有得到我node_modules 个文件夹。
据我所知,package-lock.json
文件依赖于 package.json
文件的存在,因此您将无法从 package-lock.json
重新创建 node_modules
文件夹单独的文件(很高兴在这里被证明是错误的)。
因此,最好的办法是(误)使用像 auto-install 这样的模块,它能够根据项目的依赖项生成 package.json
文件,因为它们出现在文件中。
全局安装它(npm install -g auto-install
),然后你需要为它生成一个空的package.json
文件到运行(在你的项目根目录中使用npm init -y
).使用命令 auto-install
开始,它应该将依赖项添加到 package.json
文件。
HTH
从 2018 年 3 月 5 日开始,您可以运行 npm ci
从 package-lock.json 安装软件包。
npm ci bypasses a package’s package.json to install modules from a package’s lockfile.
https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable
package-lock.json
记录了确切的版本和 url 需要安装的软件包,因此您可以使用 npm 相应地安装它们:
- npm 可以从 url 指向 tarballs 的文件安装
--no-package-lock
选项告诉 npm 不要触及package-lock.json
文件
例如,要安装 package-lock.json
中的所有软件包:
cat package-lock.json | jq '.dependencies[].resolved' | xargs npm i --no-package-lock
jq
是paresjq
的命令行工具,你可以写一个简单的JavaScript脚本来解析它(如果你不想安装jq
或学习 jq 的查询语法)。