我是否提交由npm 5创build的package-lock.json文件?

npm 5今天发布 ,其中一项新function包括通过创buildpackage-lock.json文件进行确定性安装。

这个文件应该保存在源代码pipe理中吗?

我假设它与yarn.lockcomposer.lock类似,都应该保存在源代码控制中。

是的, package-lock.json旨在被检入源代码pipe理。 如果你使用的是npm 5( npm install -g npm@latest ),你可以在命令行上看到: created a lockfile as package-lock.json. You should commit this file. created a lockfile as package-lock.json. You should commit this file. 根据npm help package-lock.json

对于npm修改node_modules树或package.json任何操作,将自动生成package-lock.json 。 它描述了生成的确切树,以便后续安装能够生成相同的树,而不pipe中间依赖性更新如何。

这个文件旨在被提交到源代码库 ,并提供各种用途:

  • 描述依赖关系树的单一表示,以保证队友,部署和持续集成确保安装完全相同的依赖关系。

  • 为用户提供一个工具,使其能够“ node_modules ”到先前的node_modules状态,而不必提交目录本身。

  • 通过可读的源代码控制差异来促进树更改的更大可见性。

  • 并通过允许npm跳过先前安装的软件包的重复元数据分辨率来优化安装过程。

关于package-lock.json一个关键细节是它不能被发布,并且如果在顶层包之外的任何地方被发现,它将被忽略。 它与npm-shrinkwrap.json(5)共享格式,它基本上是相同的文件,但允许发布。 除非部署CLI工具或以其他方式使用发布过程来生产生产包,否则不build议这样做。

如果package-lock.jsonnpm-shrinkwrap.json package-lock.json都存在于一个包的根目录下, package-lock.json将被完全忽略。

是的,它的目的是检查。我想build议它得到自己的独特的承诺。 我们发现它给我们的差异添加了很多噪音。

您可以查看官方文档: https : //docs.npmjs.com/files/package-lock.json

是的,你可以提交这个文件。 对于npm修改node_modules树或package.json任何操作,将自动生成package-lock.json 。 它描述了生成的确切树,以便后续安装能够生成相同的树,而不pipe中间依赖性更新如何。