npm 5今天发布了,其中一个新功能包括通过创建package-lock.json
文件进行确定性安装。
这个文件应该保存在源代码控制中吗?
我认为它类似于yarn.lock
和composer.lock
,这两个文件都应该保存在源代码控制中。
是的,package-lock.json
是用来检查到源代码控制的。如果你使用npm 5,你可能会在命令行上看到这样的内容: 创建了一个lockfile作为package-lock.json。你应该提交这个文件。
根据[npm help package-lock.json
](https://github.com/npm/npm/blob/v5.0.0/doc/files/package-lock.json.md)。
package-lock.json
是自动生成的,适用于任何npm 修改 "node_modules "树或 "package.json "时,会自动生成 "package-lock.json"。它描述了 它描述了所生成的确切的树,这样后续的安装就能够 生成相同的树,不管中间的依赖关系是否更新。
这个文件是用来提交到源码库中的,并有以下作用 各种用途。
*描述一个依赖树的单一表示,这样队友、部署和持续集成就能保证安装完全相同的依赖关系。
- 为用户提供一个工具,让他们可以在不提交目录本身的情况下穿越时空到以前的`node_modules'状态。
- 通过可读的源码控制差异,促进树变化的更大可见性。
- 并通过允许npm跳过以前安装的软件包的重复元数据解析来优化安装过程。
package-lock.json
的一个关键细节是,它不能被发布,而且如果在任何地方发现它,它将被忽略。 如果在顶层包以外的任何地方发现它,它将被忽略。它与 它与npm-shrinkwrap.json(5)共享一个格式,后者本质上是相同的文件,但是 允许发布。除非部署一个CLI工具或 否则,不建议这样做,除非使用发布程序来制作生产包。
如果
package-lock.json
和npm-shrinkwrap.json
同时出现在软件包的根目录下,package-lock.json
将被删除。 包的根目录下,package-lock.json
将被完全忽略。
是的,你可以提交这个文件。来自[npm'的官方文档](https://docs.npmjs.com/files/package-lock.json)。
package-lock.json
会在任何npm
修改node_modules
树或package.json
的操作中自动生成。它描述了所生成的准确的树,这样后续的安装就能够生成相同的树,而不考虑中间的依赖关系更新。这个文件是用来提交到源码库中的[。]