我正在开发一个开源项目,该项目目前正在使用 lerna来帮助管理具有多个软件包的单个存储库.到目前为止,这么好,除了因为我们目前没有收缩任何东西而偶尔会出现问题.我一直在尝试做
我本来希望使用我以前的项目熟悉的npm shrinkwrap.不幸的是lerna doesn’t appear to support shrinkwrap.
B计划是利用纱线,经过一些初步的困难后,在转换到使用纱线工作区后似乎没问题 – 至少我认为纱线安装 – 冷冻锁文件正在做我想要的.
不幸的是,除了依赖锁定之外,纱线似乎没有帮助 – 一切都与npm和lerna一起工作,但是lerna和纱线工作空间似乎导致解决模块的问题(甚至在同一目录中解决某些令人困惑的问题).
也许转换到纱线无论如何都是矫枉过正,所以我开始想知道更新版本的npm和package-lock.json是否会更好.不幸的是,它看起来像would need some work arounds with lerna,此时我开始怀疑lerna真正添加多少.也许dropping lerna会有帮助吗?
那么,tl; dr,有没有人有一种很好的方法可以锁定monorepo中的模块依赖?
我建议只使用精确的版本控制;所以在你的package.json文件中有^ 3.4.2等依赖项的版本号,将其更改为3.4.2.数字前面的^(或〜)表示版本范围.您可以使用 save exact config option:–save-exact标志或将save-exact = true放在repo中的.npmrc文件中来实现. lerna add还支持 exact option.希望有所帮助!