当前位置: 首页 > 知识库问答 >
问题:

将npm的“package lock.json”置于版本控制之下有什么意义?

罗心思
2023-03-14

将npm的包锁定有什么意义。json是否在版本控制下?根据我的经验,控制此文件的源代码比提高效率带来的麻烦和混乱更多。

具有包锁。每次添加/删除/修改任何节点模块的开发人员需要解决分支之间的冲突时,源代码管理下的json都会让人头疼。尤其是在软件包锁定的复杂/大型应用程序上工作。json可以有数万行长。即使只是吹走节点_模块并运行新的npm安装,也会在包锁中产生剧烈的变化。

关于包锁还有几个其他问题:

  • 我是否提交包锁。npm创建的json文件
  • Npm-包锁。json角色
  • 为什么npm安装重写包锁。json

还有一个GitHub问题,关于包锁的大量对话:

  • 包裹锁。打包后未更新json文件。json文件已更改

这让我觉得仍然存在广泛的不确定性,需要澄清。

根据医生的说法

包锁。对于npm修改节点\模块树或包的任何操作,都会自动生成json。json。

那么,您为什么要将自动生成的文件置于源代码控制之下呢?

上面的GitHub问题详细描述了一些人如何响应与package-lock.json的混淆,将他们的npm安装脚本更改为rm-fpackage-lock.json

好像是包锁。json正在努力成为准确版本的节点模块依赖项的真实来源,但这不正是软件包的目的吗。json会吗?在这个文件中解决合并冲突的痛苦何时开始得到回报?


共有3个答案

陈实
2023-03-14

IMOpackage-lock.json(或yarn-lock.json)应始终致力于源代码控制。撇开合并/重新基冲突不谈(这在很大程度上通过yarnBTW得到缓解——你可以yarn安装中期重新基来自动解决问题),这是你最好的保证,提交时的代码将在新鲜结账并安装。

盖马鲁
2023-03-14

创建一个。gitattributes条目:

# common settings that generally should always be used with your language specific settings

# Auto detect text files and perform LF normalization
* text=auto

#
# The above will handle all files NOT found below
#

#*.svg text
*.lock binary

然后,当您合并时,您只需选择版本与代码合并。我认为这样可能会遇到包冲突。

我们通过在构建过程中检查版本来缓解这种情况。

凌朗
2023-03-14

根据我的经验,将包锁定是没有意义的。版本控制下的json。这使得管理大型合并/重定基准成为一场噩梦。但是,在某些情况下,包锁可能非常有用。

最近(2017/10/10)时刻。js在一次小版本更新中引入了突破性的更改。也就是说,如果一个人在装运时没有包裹锁。json,在他们的包中有类似的东西。json:

“时刻”:“^2.12.0”

2.19.0版中引入的一些突破性更改会悄悄地渗透到您的代码中,几乎没有任何痕迹。

这就是为什么在切割一个分支作为发布候选之后,关键是:

  • 卸下包锁。json来自。gitignore
  • 运行npm install生成包锁。json
  • 使用此包锁进行测试、qa和部署

这可以确保您的npm模块版本在测试的相同版本上保持锁定。

 类似资料:
  • 问题内容: 我目前在我的PHP项目中使用SVN。我当时想我也应该使数据库处于版本控制之下,但是最好的方法是什么?我是否只是在SVN中的项目中制作了一个数据库文件夹,将SQL更改粘贴到名为from_1.0_to_2.0.sql的文件中并提交? 问题答案: 每当您对数据库进行更改时,都应将这些更改保存在迁移中,以便以后可以在更新代码的同时在其他服务器上运行。但是您基本上有了正确的想法。您可以编写一些工

  • 你可以把一个版本控制系统(缩写VCS)理解为一个“数据库”,在需要的时候,它可以帮你完整地保存一个项目的快照。当你需要查看一个之前的快照(称之为“版本”)时,版本控制系统可以显示出当前版本与上一个版本之间的所有改动的细节。 版本控制与项目的种类,使用的技术和基础框架并无关系: 无论是设计开发一个HTML网站或者是一个苹果应用,它的工作原理都是一样的。 你可以选择任何你喜欢的工具来工作,它并不关心你

  • 问题内容: 我是否应该将项目文件(如Eclipse的.project,.classpath,.settings)置于版本控制下(例如Subversion,GitHub,CVS,Mercurial等)? 问题答案: 您确实希望保持任何可移植设置文件的版本控制, 这意味着: 其中没有绝对路径的任何文件。 包括: 我的经验法则: 您必须能够将项目加载到工作区中,并具有在IDE中正确设置它并在几分钟之内进

  • 本文向大家介绍npm 语义版本控制详解,包括了npm 语义版本控制详解的使用技巧和注意事项,需要的朋友参考一下 场景引入 开发时,经常需要依赖一些模块(包),我们进行了下载之后,便一直在该版本的模块环境下进行开发,但是线上的服务器(其他开发者)一般都是根据依赖来配置文件,重新下载各个模块,但是保不齐某个模块的版本已经更新了,这时线上的包会更新到最新的版本,但你的代码还是依据老版本来写的,这时可能会

  • 我试图在ubuntu服务器上安装npm和nodejs,但注意到不知何故,在运行后,我最终得到了两个版本。我知道这一点,因为当我运行时,它会返回,而当我运行时,它返回。在我继续之前,我想把这个设置好。有人明白我为什么会有两个版本吗?我的理解是,安装nodejs也应该安装npm,但这只允许我以更高的权限运行npm,我知道我不应该这样做。谁能让我知道我做错了什么?谢谢你。

  • 几乎所有项目[61],都要使用版本控制,它究竟有什么优势呢? 时间机器 假设你使用的编辑器,不支持删除,那你就得特别的谨小慎微,甚至是如履薄冰:因为你打错了字没法删除 放松下来,目前我所接触的所有编译器中,还没有变态到这种程度的。 如果编译器提供了删除功能,却没有 undo,那可能会更可怕:如果你不小心选中了全部文字,手一抖……因为不能 undo,你知道,如果此时不小心按下 delete,你就得从