从package-lock.json创建package.json

时间:2018-04-26 08:59:17

标签: node.js webpack package.json package-lock.json

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

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:5)

使用npm install -g npm

安装最新的npm

运行npm init并回答问题。

以上命令将生成一个package.json,并包含package-lock.json中列出的现有软件包

答案 2 :(得分:3)

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从软件包的锁定文件中安装模块。

More Information

答案 3 :(得分:3)

我想我明白了。

我认为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中创建依赖项。

答案 4 :(得分:-1)

这可以工作,但不适用于package-lock.json文件。以我的经验,如果我在执行node_modules/的工作目录中有一个$ npm init文件夹,则npm会生成一个package.json文件,该文件的依赖项列表与以前安装的模块相对应并保存到node_modules/。无论是否存在package-lock.json文件,这种情况都会发生。