我是否提交由npm 5创build的package-lock.json文件?
npm 5今天发布 ,其中一项新function包括通过创buildpackage-lock.json
文件进行确定性安装。
这个文件应该保存在源代码pipe理中吗?
我假设它与yarn.lock
和composer.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.json
和npm-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中间依赖性更新如何。