Art*_*mus 105 package npm yarnpkg
我们使用纱线进行所有确定性的pkg安装但不阻止用户使用npm - 我猜这两个文件都会导致问题.是否应该将一个添加到.gitignore目录中?
Rob*_*low 122
正如覆盖在其他地方,依赖锁文件,这是由很多的包管理系统的支持(如: 作曲家和打捆),应致力于在结束链项目的代码库-让每个人尝试运行该项目正在做所以用完全相同的测试依赖集.
是否应该始终将锁定文件提交到旨在包含在其他项目中的包(其中需要更松散的依赖项),这一点尚不清楚.但是,Yarn和NPM(由@Cyrille所涵盖)智能地忽略yarn.lock
并且package-lock.json
在必要时分别使得始终提交这些锁定文件变得安全.
因此,您应始终至少提交一个yarn.lock
或package-lock.json
取决于您正在使用的包管理器.
目前我们有两个不同的包管理系统,安装都同样依赖集从package.json
,但生成并从两个不同的lockfiles读取.NPM 5生成package-lock.json
,而Yarn生成yarn.lock
.
如果您提交,package-lock.json
那么您正在构建支持使用NPM 5安装依赖项的人员.如果您提交yarn.lock
,则构建支持使用Yarn安装依赖项的人员.
无论您选择提交yarn.lock
还是package-lock.json
两者都取决于您项目中的开发人员是仅使用Yarn还是NPM 5或两者.如果您的项目是开源的,那么最适合社区的事情可能是提交两者并拥有自动化流程以确保yarn.lock
并package-lock.json
始终保持同步.
更新: Yarn现在引入了一个import
命令,它将yarn.lock
从package-lock.json
文件生成一个文件.这对于保持两个文件同步很有用.(谢谢@weakish)
这个问题在Yarn项目中进行了详细讨论:
两者现已关闭.
cri*_*mbo 17
您应该提交1个依赖树锁文件,但不应同时提交.这也需要标准化纱线或npm(不是两者)来构建+开发项目.
如果你对纱线进行标准化,这里是关于为什么要使用yarn.lock的纱线文章.
如果同时提交yarn.lock
文件和package-lock.json
文件,那么2个文件可以提供多种方式来提供不同的依赖关系树(即使纱线和npm的树分辨率算法完全相同),并且确保它们提供的完全相同也是非常重要的.同样的答案.由于它不重要,因此不太可能在两个文件中维护相同的依赖树,并且您不希望根据构建是使用yarn还是npm完成不同的行为.
如果纱线从使用切换yarn.lock
到package-lock.json
(此处发布),那么选择要提交的锁定文件变得容易,我们不再需要担心纱线和npm导致不同的构建.根据这篇博文,这是一个我们不应该期待的变化(博客文章也描述了yarn.lock
和之间的差异)package-lock.json
.
我在想同样的问题。这是我的想法,希望对您有所帮助:
在NPM包lock.json文档说以下:
对于npm修改node_modules树或package.json的任何操作,都会自动生成package-lock.json。它描述了生成的确切树,因此无论中间依赖项更新如何,后续安装都可以生成相同的树。
这很棒,因为它可以防止“在我的机器上工作”的影响。
如果没有此文件,npm install --save A
npm将添加"A": "^1.2.3"
到您的中package.json
。当别人运行npm install
你的项目,有可能是版本1.2.4
的A
已被释放。由于它是满足您指定的semver范围的最新可用版本package.json
,因此它将安装该版本。但是,如果此版本中引入了新的错误怎么办?此人将遇到一个无法复制的问题,因为您使用的是先前版本,没有任何错误。
通过修复node_modules
目录的状态,package-lock.json
文件可以防止此问题,因为每个人的每个软件包的版本都相同。
但是,如果您正在编写和发布npm模块呢?该文档说:
关于package-lock.json的一个关键细节是它无法发布,并且如果在顶级软件包之外的任何地方都将被忽略。
因此,即使您提交它,当用户安装模块时,他/她也不会获取package-lock.json
文件,而只会获取package.json
文件。因此,npm将安装满足您所有依赖项的semver范围的最新版本。这意味着您始终希望使用这些依赖关系的版本来测试模块,而不是在开始编写模块时安装的版本。因此,在那种情况下,package-lock.json
显然是没有用的。而且,这可能很烦人。
这是我的经验法则:如果您正在处理应用程序,请提交锁定文件。如果要维护库,请将其添加到忽略列表中。无论哪种方式,您都应该在中使用准确的semver范围package.json
。Yehuda Katz(已缓存)为何时提交Gemfile.lock
(Ruby的锁定文件)以及何时不提交做出了很好的解释。至少阅读tl; dr部分。
小智 3
这些文件由您的工具管理,因此\xe2\x80\x93假设使用yarn将有效更新package-lock.json
\xe2\x80\x93I suppose committing both files works fine.
我认为对您的用户来说最重要的是package-lock.json
(例如,我不使用纱线)所以这个有 to be committed.
对于yarn.lock
,这取决于您是单独工作还是团队合作。如果单独的话,我想没有必要提交。如果您(计划)在团队中工作,那么您可能应该提交它,至少在纱线支持它之前
我想yarn团队最终会停止使用yarn.lock
并使用package-json.lock
instead, at this time it will become simpler
归档时间: |
|
查看次数: |
41062 次 |
最近记录: |