javascript - npm 从 package-lock.json 文件中创建一个 package.json 文件?

标签 javascript node.js npm

我有一个项目恰好有一个完整的 node_modules 目录和一个 package-lock.json 文件,但没有 package.json 文件。

所以我运行 npm init 来创建一个新的 package.json 文件,但现在我正在努力让它包含项目的依赖项。

有没有办法让 npm 读取 node_modules 目录或 package-lock.json 并创建匹配的 package.json 文件?

最佳答案

package-lock.json 不包含足够的信息来生成准确的 package.json 文件。它包含所有已安装包的列表和版本,但它还在列表中包含子依赖项。

您可以阅读信息并创建一个新的依赖项列表,但您最终会得到所有依赖项的列表,包括您不直接依赖的子依赖项。 dependenciesdevDependencies 之间也没有区别。

有趣的是,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/

相关文章:

javascript - 内容导出服务器错误

javascript - 如何在 Javascript 中处理 ctrl+arrow?

javascript - 使用 Meteor + React (JSX) 导出 amcharts

node.js - 一次将大量文件上传到 AWS S3

javascript - node.js 将 imagemagick 的输出上传到 AWS S3

node.js - 如何发布 NPM Scoped Packages/NPM scope not found?

javascript - 是否可以在 plotly.js 中有一个水平颜色条

Javascript - defineProperty 和直接在对象上定义函数的区别

node.js - ElasticBeanstalk 上的 Meteor 部署失败

node.js - npm v6.4.1 没有在 docker 中运行 `prepare`