6

我正在开发一个开源项目,该项目目前正在使用lerna来帮助管理具有多个包的单个存储库。到目前为止,一切都很好,只是偶尔会出现一些问题,因为我们目前没有收缩包装任何东西。我一直在尝试做一些单仓库版本的收缩包装,这样我们就不会受到所有依赖项的摆布(令人惊讶的是,在发布过程中经常会出现所有问题!)但是遇到了一些障碍和想知道我是否走在正确的轨道上。

我最初希望使用我在以前的项目中熟悉的 npm shrinkwrap。不幸的是lerna 似乎不支持 shrinkwrap

计划 B 是使用纱线,在经历了一些最初的困难之后,在切换到使用纱线工作区后似乎一切正常——至少我认为这yarn install --frozen-lockfile是在做我想做的事。

不幸的是,除了依赖锁定之外,yarn 似乎没有帮助——一切都与 npm 和 lerna 一起工作,但 lerna 和yarn 工作空间似乎导致了解决模块的问题(甚至解决了同一目录中令人费解的问题)。

也许切换到 yarn 是多余的,所以我开始想知道更新版本的 npm 和package-lock.json是否会是一个更好的主意。不幸的是,这看起来需要对 lerna进行一些工作,此时我开始怀疑 lerna 到底添加了多少。也许放弃 lerna会有所帮助?

那么,tl;博士,有没有人有一个很好的方法来锁定monorepo中的模块依赖关系?

4

2 回答 2

0

yarn是一个生产就绪的包管理器,原生支持 monorepos :)

使用时yarn workspaces,无需同时lerna作为monorepo管理器使用。

如果需要,您可以使用 lerna 的其他功能,但没有理由使用 lerna 来安装 monorepos(已经使用 yarn)。

如果使用安装/管理 monorepo 时出现特定错误yarn,请将它们添加到问题中。

笔记:

  • --frozen-lockfile在纱线 monorepo 中没有做任何事情。yarn关于我认为不会很快解决的未解决问题。
于 2020-10-23T17:24:31.293 回答
0

我建议只使用精确的版本控制;因此,在您的package.json文件中有依赖项的版本号,例如^3.4.2,将其更改为3.4.2. 数字前的^(或~)表示版本范围。您可以使用save exact config 选项来实现这一点:--save-exact标志或放置在reposave-exact=true中的文件中。还支持精确选项.npmrclerna add

希望有帮助!

于 2018-10-22T20:43:14.170 回答