各位前端同学,你们赞成 npm 包锁版本还是不锁版本呢?

2021-08-03 11:32:48 +08:00
 isbase

锁版本

好处:稳定,yarn.lock 可以确保所有人安装的版本是一致的,不会出现一会儿正常一会儿错误的情况

坏处:

不锁版本

准确的说是不锁 minor 和 patch,只锁大版本,例如 ^1.x.x

好处:每次 npm install 都会拉取最新的 minor 和 patch 版本,利于依赖包提升新版本的普及率

坏处:不稳定,依赖包发版有几率导致项目挂掉,即使是 patch 版本,依赖包越多这个问题越严重


以及各位的公司在这方面都是怎么规定和建议的呢

3265 次点击
所在节点    问与答
31 条回复
ianva
2021-08-03 20:36:31 +08:00
不锁版本,你 CI/CD 的时候构建的版本敢上线?
leafre
2021-08-03 20:42:01 +08:00
锁 生产稳定第一,早收工早下班
clickhouse
2021-08-03 21:25:37 +08:00
锁,有需求的话可以单独更新版本提交测试。
wenzichel
2021-08-03 22:01:50 +08:00
锁版本,即使版本低,但每个组件组合起来,是能正常运作的,万一某个组件拉取的是最新版本,可能会造成多个组件的不兼容,连启动都启动不起来。
yhxx
2021-08-03 23:48:19 +08:00
锁,甚至为了防止第三方不锁,连依赖一起打包
aaronlam
2021-08-04 01:38:21 +08:00
我们公司目前是不锁版本,如果出问题也只能人肉排查。
我个人感觉也还是锁版本比较稳当,这样就可以定期进行一次阶段性的升级,如果某些包出现安全问题的时候再进行紧急的升级,这样至少能保证出问题的几率是在可控范围之内。
shiny
2021-08-04 01:48:15 +08:00
package-lock 进版本控制,CI 的时候使用 npm ci 。版本变更是独立的 commit,谁修改谁负责。
sutra
2021-08-04 02:03:28 +08:00
历史上好像有好几回因为没有锁死版本而出的政治、宗教方面的生产事故了。
sutra
2021-08-04 02:05:37 +08:00
比如 Ant Design 圣诞节彩蛋事件。
xupefei
2021-08-04 04:52:18 +08:00
指望小版本保持兼容性就是扯淡,我用过一个 python 包在一个+0.0.1 的版本里去掉了整个 python3.5 支持,搞得我负责的项目挂了一整天。
lerry
2021-08-04 10:16:54 +08:00
锁版本,彻底锁死,谨慎升级,因为真的吃过亏

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/793339

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX