lerna import 始终返回 EDESTDIR

3

我有一个现有项目,想要将其导入到使用Yarn工作区的现有lerna monorepo中。

命令:

我尝试运行了以下所有命令。但错误依然如故。另外, petstore 有一个 package.json 文件并且是一个 git 仓库。

lerna import ./petstore --dest="./packages/"
lerna import ./petstore --dest="./packages/api/"

错误:

lerna notice cli v3.20.2
lerna ERR! EDESTDIR --dest does not match with the package directories: packages/**

此外,lerna import ../petstore会创建一个意料之外的packages/**/petstore文件夹。

我希望这里包含所有相关的代码。我们在packages/shared下有支持包,在packages/api下有API。

lerna.json

{
  "packages": [
    "packages/**/*"
  ],
  "npmClient": "yarn",
  "useWorkspaces": true,
  "private": true,
  "version": "0.0.1",
  "lerna": "2.11.0"
}

package.json

{
  "name": "root",
  "devDependencies": {
    "lerna": "^2.11.0"
  },
  "workspaces": [
    "packages/**/*"
  ],
}

我查阅的资源:

1个回答

2

Lerna会从package.json中的key为workspaces的地方读取packages,而不是从lerna.json中的packages

Lerna会读取所有以/*结尾的值,并将其视为包目录。它会将**解释为字面量,而不会将其作为通配符进行解析和扩展。

解决方法是从lerna.json中删除packages

{
  "npmClient": "yarn",
  "useWorkspaces": true,
  "private": true,
  "version": "0.0.1",
  "lerna": "2.11.0"
}

如果您的 monorepo 结构是这样的,请明确地将工作区路径更新为引用任何子目录中的包:

{
  "name": "root",
  "devDependencies": {
    "lerna": "^2.11.0"
  },
  "workspaces": [
    "packages/a/*",
    "packages/api/*"
  ],
}

将“pet-store”项目从单体库外部的目录导入到单体库中的“packages/api”中,操作步骤如下:
lerna import ../pet-store --dest="./packages/api/"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接