我是否需要package-lock.json和package.json?

Omr*_*zon 94 npm package.json npm-install package-lock.json

将我的NPM更新到最新版本(从3.X到5.2.0)并npm install在现有项目上运行后,我得到一个自动创建的package-lock.json文件.

我可以告诉package-lock.json我一个确切的依赖树而不是package.json.

仅从这些信息来看,它似乎package.json是多余的,不再需要了.

NPM是否有必要运作?
是否安全或仅使用package-lock.json文件?

package-lock.json(doc1,doc2)上的文档没有提及任何相关内容.

编辑:

经过一番思考之后,我得出的结论是,如果有人想使用旧版本的NPM(5.x之前版本),它仍会安装所有依赖项,但版本不准确(补丁版本)

Mar*_*nko 56

你既需要package-lock.jsonpackage.json.

你需要package.json吗?是的.

你能有一个只有项目package-lock.json吗?.

package.json被用于除依赖更多-像定义项目属性,描述,作者和许可信息,脚本等,package-lock.json仅用于依赖锁定到一个特定的版本号.

  • 而不是 **npm install** 使用 **npm ci** 根据 `package-lock.js` 安装依赖项 - 请参阅 https://docs.npmjs.com/cli/v8/commands/npm-ci (5认同)

Nar*_*y M 51

package-lock.json: 记录每个已安装软件包的确切版本,以便您重新安装它们。未来的安装将能够构建相同的依赖树。

package.json:记录您的应用程序需要的最低版本。如果您更新特定包的版本,则不会在此处反映更改。

  • 如果上述情况为真,并且 `package.json` 记录了应用程序所需的最低版本,并且 package-lock.json 记录了每个已安装软件包的确切版本,那么我会遇到一个奇怪的情况,模块设置为版本package.json 中的 0.112.1 和 package-lock.json 中的 0.110.0... (2认同)

Sta*_*dey 11

如果您的问题是锁定文件是否应该提交给您的源代码管理 - 应该这样做。在某些情况下会被忽略。

我发现它膨胀的拉取请求和提交历史,所以如果你看到它改变,为它做一个单独的提交。