我正在将我的monorepo(背面)从纱线(带工作空间)切换到lerna / npm,因为纱线太慢且不稳定。但是,我做了一个惊人的发现。使用以下简单的package.json
:
{
"devDependencies": { "lerna": "^2.11.0" },
"dependencies": { "typescript": "^2.9.1" }
}
和一个空lerna.json
(换句话说,根本没有包),然后当我运行
$ lerna bootstrap
它不会在任何顶级node_modules
目录中安装任何内容。如果由于某种原因我有一个没有node_modules
子目录的.bin
目录,那么lerna bootstrap
无法创建或填充.bin
子目录。
lerna是不是设计用于实际指定要安装的顶级软件包(以及它们在.bin
中的二进制文件)?我注意到如果我在没有包的lerna monorepo上尝试lerna add
,它会抱怨" lerna WARN在可以添加tslint的范围内找不到包。"
我在文档中找不到与此相关的任何内容。使用纱线/工作区,我使用能够安装像TypeScript这样的全局(顶级)版本的东西,以便在我的构建脚本中使用,同时保持对所安装版本的控制。
答案 0 :(得分:2)
来自Lerna docs:
您可以将根添加为托管位置(在
lerna.json
的packages数组中) - 如果这是您需要的内容。这会导致lerna将root的依赖关系链接到包的目录,运行postinstall
脚本以及其他脚本等。