我有一个项目恰好有一个完整的 node_modules 目录和一个 package-lock.json
文件,但没有 package.json
文件。
所以我运行 npm init
来创建一个新的 package.json
文件,但现在我正在努力让它包含项目的依赖项。
有没有办法让 npm 读取 node_modules 目录或 package-lock.json
并创建匹配的 package.json
文件?
最佳答案
package-lock.json
不包含足够的信息来生成准确的 package.json
文件。它包含所有已安装包的列表和版本,但它还在列表中包含子依赖项。
您可以阅读信息并创建一个新的依赖项列表,但您最终会得到所有依赖项的列表,包括您不直接依赖的子依赖项。 dependencies
和 devDependencies
之间也没有区别。
有趣的是,npm 似乎确实能够在一段时间内记住在给定目录中安装了哪些包(它可能缓存在某个地方)。如果锁定文件最初是在您的计算机上创建的,一个简单的 npm init
可能 会为您提供一个准确的 package.json
文件。
如果你真的想生成一个 JSON 格式的所有包的列表,你可以使用这样的脚本:
var dependencies = require('./package-lock.json').dependencies;
var list = {};
for (var p of Object.keys(dependencies)) {
list[p] = dependencies[p].version;
}
console.log(JSON.stringify(list, null, ' '));
关于javascript - npm 从 package-lock.json 文件中创建一个 package.json 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53858814/