我正在将我的 monorepo(返回)从yarn(带工作区)切换到 lerna/npm,因为yarn 太慢且不稳定。然而,我有了一个惊人的发现。使用以下简单的 package.json
:
{
"devDependencies": { "lerna": "^2.11.0" },
"dependencies": { "typescript": "^2.9.1" }
}
和一个空的lerna.json
(换句话说,根本没有包),然后当我运行时
$ lerna bootstrap
它不会在任何顶级 node_modules
目录中安装任何内容。如果由于某种原因我有一个没有 .bin
子目录的 node_modules
目录,那么 lerna bootstrap
无法创建或填充 。 bin
子目录。
lerna 的设计不是为了实际指定要安装的顶级软件包(以及 .bin
中的二进制文件)吗?我确实注意到,如果我在没有软件包的 lerna monorepo 上尝试 lerna add
,它会提示“lerna WARN 在可以添加 tslint 的范围内找不到软件包。”
我在文档中找不到与此相关的任何内容。通过yarn/workspaces,我能够安装诸如TypeScript之类的全局(顶级)版本,以便在我的构建脚本中使用,同时保持对已安装版本的控制。
最佳答案
来自 Lerna 文档:
You can add the root as a managed location (in the packages array of
lerna.json
) - if that's something you need. This would cause lerna to link root's dependencies to your packages' directories, runpostinstall
script along with the others, etc.
关于npm - Lerna 不支持顶层依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50654496/