Lock到底好不好?
发布于 2 个月前 作者 zhanzhenzhen 803 次浏览 来自 问答

npm v5出现了package-lock.json,感觉这会污染Git仓库啊,但官方网站上竟然还建议不要把这个文件放入.gitignore内!

8 回复

可能你没遇到版本不匹配的坑。

提出這個疑問說明根本沒明白lock的作用。 為什麼會污染呢?這才是保證依賴統一的鑰匙。

@captainblue2013 我觉得把自动生成的东西放进仓库就是污染。仓库应该只放手工输入的东西。

@zhanzhenzhen 不不不,自動是為了不用你手寫那麼麻煩,你非要自己寫也可以啊。 這個lock的意義就是鎖定目前的版本,尤其是npm這種發佈十分隨意的,不鎖版本很容易以後出問題。 寄希望于其他開發者的素質,還不如自己把握住。

放進倉庫的意義在於,npm會優先根據lock的版本來安裝,這樣你的項目不管在任何地方部署,都能保證安裝同一套版本的依賴。

其他 包管理工具基本都有lock功能,npm算跟進慢了的,現在終於等到了,你不用懷疑它的科學性,只需要自己想明白就是了。

最好还是要lock,至于要不要升级要看你在测试环境下做了升级后对现有功能有没有影响,比如兼容性,性能之类的。

我觉得是需要放进仓库的. java的pom.xml, python的requirements.txt, 都是把依赖和版本写在一起的, npm只是packacge.json没做好, 多了一个lock

ruby里用了很多的best practice,你说呢?

@i5ting 我已开始用npm的时候,就在找类似gem lock的东西,后来找到了shrinkwrap,感觉很类似,但就是没啥人用。后来慢慢发现,原来这东西不好用。现在 package-lock.json 出来,总算是看起来感觉好多了。 但现在 package-lock.json 在腾讯内部我也没开始推(我在负责腾讯的npm仓库),因为这个 lock 文件里面会锁定 registry,导致一些莫名其妙的问题发生,比如通过通过 registry 安装出来的包莫名地指向 npmjs.org,不知是不是哪块缓存有问题。所以我关掉了内部npm客户端的package-lock.json特性。

回到顶部