Skip to content

lock 文件讨论

ZhouZhen edited this page Dec 22, 2021 · 2 revisions

@uyarn

由于npm 7.x带来的breaking change, 见 https://github.blog/2021-02-02-npm-7-is-now-generally-available/ https://blog.npmjs.org/post/621733939456933888/npm-v7-series-why-keep-package-lockjson.html 使用npm 7.x (node 15携带的版本)install的生成的lock文件和6.x及以下的lock文件有较大的差异, 如现在common仓库的lock文件就是7.x install生成的,比6.x增加了一倍;如果开发者使用6.x执行install则会将删减7增加的内容,回到原来的版本。

由于目前大家使用的npm版本各不相同,这个issue希望可以讨论 确定 统一各个仓库的的lock文件的形式,避免各种MR提交过程中lock文件反反复复的改动,可选项:

统一使用6.x版本的lock文件 统一使用7.x版本的lock文件 替换package-lock.json, 使用yarn install 使用yarn.lock 不要lock文件?

@xiaosansiji

lock 文件应该还是要的,组件库作为基础设施,依赖自动升总感觉会坑到别人

@libo1106

package-lock.json 对于组件而已,其实是个假 lock,仅仅能锁住组件工程开发过程的依赖,用户业务侧实际使用的时候,组件的依赖是跟随组件 package.json 中的语义化版本进行升级的。

TDesign 工程有 package-lock.json 文件,可能会发生一种 TDesign 工程不出问题,但业务使用过程出现依赖兼容问题,并且组件工程本身无法感知到。

TVision 之前就遇到,相关议题 tvision/tvision-t2#12

当时官网、业务使用都能发现问题,但项目自身 CI、本地开发都由于 package-lock 的存在,而没发现问题

最后解决是 package.json 里面锁死依赖

@uyarn

目前各个仓库的情况:

common 7.x生成的package-lock web-vue、web-react、web-angular、web-vue-3 使用6.x 生成的package-lock icon独立仓库使用yarn.lock mobile-vue、小程序没有lock

结论:不用lock