一项新功能包括确定性安装和package-lock.json文件创建。
package-lock.json
这个文件应该保存在源代码管理中吗?
是的,package-lock.json旨在检查到源代码控制。如果您使用的是 npm 5+,您可能会在命令行上看到此通知:created a lockfile as package-lock.json. You should commit this file.根据npm help package-lock.json:
created a lockfile as package-lock.json. You should commit this file.
npm help package-lock.json
package-lock.json对于 npm 修改node_modules树或package.json. 它描述了生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何。 该文件旨在提交到源存储库中,并用于各种目的: 描述依赖关系树的单一表示,以保证团队成员、部署和持续集成安装完全相同的依赖关系。 为用户提供一种“时间旅行”到以前状态的工具,node_modules而无需提交目录本身。 通过可读的源代码控制差异来促进对树更改的更大可见性。 并通过允许 npm 跳过以前安装的包的重复元数据解析来优化安装过程。 关于它的一个关键细节package-lock.json是它无法发布,如果在顶级包以外的任何地方找到它,它将被忽略。它与 npm-shrinkwrap.json 共享格式,本质上是相同的文件,但允许发布。除非部署 CLI 工具或以其他方式使用发布过程来生成生产包,否则不建议这样做。 如果包的根目录中同时存在 和 ,package-lock.json则将被完全忽略。npm-shrinkwrap.json``package-lock.json
package-lock.json对于 npm 修改node_modules树或package.json. 它描述了生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何。
node_modules
package.json
该文件旨在提交到源存储库中,并用于各种目的:
关于它的一个关键细节package-lock.json是它无法发布,如果在顶级包以外的任何地方找到它,它将被忽略。它与 npm-shrinkwrap.json 共享格式,本质上是相同的文件,但允许发布。除非部署 CLI 工具或以其他方式使用发布过程来生成生产包,否则不建议这样做。
如果包的根目录中同时存在 和 ,package-lock.json则将被完全忽略。npm-shrinkwrap.json``package-lock.json
npm-shrinkwrap.json``package-lock.json