2

我正在将我的 monorepo(返回)从 yarn(带工作区)切换到 lerna/npm,因为 yarn 太慢且不稳定。然而,我有一个惊人的发现。有以下琐碎的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 add在没有包的情况下尝试 lerna monorepo,它会抱怨“lerna WARN No packages found in scope where tslint can be added”。

我在文档中找不到与此相关的任何内容。使用 yarn/workspaces,我能够安装诸如 TypeScript 之类的全局(顶级)版本,以便在我的构建脚本中使用,同时保持对已安装版本的控制。

4

1 回答 1

3

来自 Lerna 文档:

您可以将根添加为托管位置(在 的 packages 数组中lerna.json) - 如果您需要的话。这将导致 lerna 将 root 的依赖项链接到您的包目录,postinstall与其他脚本一起运行脚本等。

于 2018-06-06T04:12:56.240 回答