【问题标题】:lerna import always returns EDESTDIRlerna import 总是返回 EDESTDIR
【发布时间】:2020-05-31 21:58:12
【问题描述】:

我有一个预先存在的项目,我想将它导入到我现有的使用 yarn 工作区的 lerna monorepo 中。

命令:

我已尝试运行以下所有命令。错误保持不变。此外,petstore 有一个 package.json 文件,是一个 git repo。

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/**/*"
  ],
}

我看过的资源:

【问题讨论】:

    标签: node.js yarnpkg lerna


    【解决方案1】:

    Lerna 从 package.json 上的 workspaces 键而不是 lerna.json 上的 packages 读取包。

    lerna 读取带有/* 的所有值并将它们视为包目录。它从字面上解释**,不会将其解析为通配符并对其进行扩展。

    解决办法是把packageslerna.json中去掉:

    {
      "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 项目从 mono-repo 外部的目录导入到 monorepo 中的 packages/api

    lerna import ../pet-store --dest="./packages/api/"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-04
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多