43

我下载了一个主题,它有一个 package-lock.json 文件,但没有 package.json 文件。有没有办法可以从 package-lock.json 文件生成 package.json。如何仅使用 package-lock.json 文件安装节点模块。有没有办法做到这一点?

4

4 回答 4

33

Install the latest npm with npm install -g npm

Run npm init and respond to the questions.

The above command will generate a package.json and include the existing packages listed in package-lock.json

于 2018-08-20T05:29:20.240 回答
20

我想我想通了。

我认为npm init不能从 package-lock.json 中提取。但是,它似乎确实从您/node_modules中已有的内容中提取。我相信这就是为什么@Harry B 的解决方案适用于某些人而不适用于其他人的原因。

例如,如果您刚刚克隆了包含 package-lock.json、没有 package.json 和空/不存在 node_modules 的项目,npm init则不会创建任何依赖项。但是,如果您运行npm install pkg1 pkg2 pkg3 ... 然后运行npm init,它将在 package.json 中创建依赖项

于 2019-08-23T14:33:10.343 回答
12

https://pravnyadv.github.io/unpackage/似乎有效。复制你的包锁定文件文本,点击按钮,将文本复制到一个新的 package.json 文件中。

于 2021-02-01T22:53:13.337 回答
5

package-lock.json文件依赖于package.json文件的存在,因此无法检索package.json(很高兴被证明是错误的)。

所以剩下的一个可能的解决方案是使用像auto-install这样的模块,它能够从项目文件依赖项中生成package.json 。

首先,您需要全局安装模块npm install -g auto-install。然后运行npm init并回答基本要求。

然后,auto-install在您的项目根目录中运行。所有依赖项都应反映在package.json文件中。

**

或者直接从 package-lock.json 安装节点模块

**

运行npm ci绕过包的 package.json 以从包的锁定文件中安装模块。

更多信息

于 2019-04-06T16:50:09.077 回答