坑的原因是 package-lock.json
这货的目的很棒,可以把依赖固定死,但是,这货貌似也要求安装环境强一致!只要有一点不一样都不行!导致我明明在本地能构建成功,但是在服务器构建时却会失败。
最后在~/.npmrc 中把npm的配置加上 package-lock=false
,不理它了!
cool! 我想禁用这个 lock 很久了! 终于知道配置项了.
good!终于不需要每次删package-lock.json,谢谢lz。
每次手动删 lock 可以拜拜了,赞!
来自酷炫的 CNodeMD
我都是git里面配置不提交就好了
.gitignore
@linruilin 仅仅不提交没用,本地还在。
使用yarn的我,不知道楼上说的是什么…
@atian25 只要不提交到git 里面去 生产环境pull的时候没拉到lock。install的时候会在生产服务器上面自己生成自己的lock 这样和本地的lock没多大关系吧。 如果在有docker的情况下 那样会隔离的更彻底
@axetroy yarn也有yarn.lock啊
@linruilin 线上肯定没问题啦。我们一直都这样。但线下帮人排查问题还是要一遍一遍得提醒要删除,很累的
@atian25 我在腾讯维护的内部npm命令,直接通过命令行参数的方式忽略了这个lock,我也不喜欢这东西。锁定 registry 问题多多。
@alsotang tnpm 本身也是不支持这个 lock 的,但在维护 egg 的时候,社区的人没办法~ 所以最近我正痛苦着,每次说重新安装依赖的时候,都要婆婆妈妈的说一句「记得不要锁版本」,现在哟这个一劳永逸的方法,就好多了。
赞。不用每次手删package-lock.json了。
@atian25 你们的tnpm跟腾讯的tnpm应该不是一回事。阿里现在是基于自研的npminstall,我为了没有兼容性的烦恼,是基于原生npm封装的。
这玩意可以确定通过测试的 依赖库版本和生产环境的保持一致, 不然测试没问题,上线因为依赖库出问题那就哭了。
避免 “我的电脑是正常的” 的问题