从 package-lock.json 创建 package.json

Posted

技术标签:

【中文标题】从 package-lock.json 创建 package.json【英文标题】:Create package.json from package-lock.json 【发布时间】:2018-10-06 21:52:32 【问题描述】:

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

【问题讨论】:

你试过npm install吗? 我有,但找不到 package.json 文件 主题不正确,因为 package.json 是安装其他依赖项所必需的。主题的 url 是什么? ***.com/questions/53858814/…的可能重复 【参考方案1】:

使用npm install -g npm安装最新的npm

运行npm init 并回答问题。

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

【讨论】:

我用最新的 npm (6.4.1) 试了一下,还是不行。它只创建一个package.json 文件,没有列出任何依赖项。 @Amade 有趣的是我能够使用该命令恢复我的包:/ npm 6.6.0package.json 不包括package-lock.json 中列出的现有包 6.9.0 并且它仍然无法正常工作,npm ci 也无法正常工作 - 如果这个文件似乎被忽略了,那么它在 CI 中的使用意义何在? 清除了 package-lock.json【参考方案2】:

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

【讨论】:

npm ci 总是告诉我“添加了 0 个包”并且auto-install 重写了我的 package-lock.json,安装了 2 个随机包和停在“Watchers initialized”... node_modules 文件夹已创建但只有这两个包...很高兴我有一个锁备份:( npm ci 取决于package.json,因此它不能仅与package-lock.json 一起使用【参考方案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中创建依赖。

【讨论】:

这是一个完美的解释。我将一个包含 node_modules 但不包含 package.json 的项目克隆到本地,所以我无法重建和部署。这是我的问题的完美解决方案。 这是对情况的完美评论,但与回答问题无关:How do I install the node modules with just the package-lock.json file【参考方案4】:

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

【讨论】:

这是完美的解决方案 这应该被选为有效答案。

以上是关于从 package-lock.json 创建 package.json的主要内容,如果未能解决你的问题,请参考以下文章

检查 NPM package.json 和 package-lock.json 是不是兼容

NPM5,package-lock.json 和 package.json 有啥区别?

[转]npm中package-lock.json的作用:npm install安装时使用

[转]npm中package-lock.json的作用:npm install安装时使用

如何从 package-lock.json 文件制作 package.json [重复]

NPM 安装只创建一个 package-lock.json?