首页 > 解决方案 > 从 git 存储库安装多个工作区 npm (yarn) 包

问题描述

我有两个存储库。第一个包含一个带有两个包的 monorepo:

   - bsconfig.json
   - package.json
   - packages/
     - transaction/
       - package.json
       - transaction.js
     - reindexed/
       - package.json
       - src/
         - IDB.res
         - ReIndexed.res

实际上packages/reindexed取决于. packages/transaction的内容packages/transaction/packages.json是这样的(片段):

{
  "name": "@kaiko-internal/transaction",
  "version": "1.0.0",
  "main": "transaction.js"
}

该文件packages/reindexed/package.json或多或少是这样的:

{
  "name": "@kaiko/reindexed",
  "version": "0.2.0",
  "license": "MIT",
  "devDependencies": {
    "esbuild": "^0.12.9",
    "qunit": "^2.16.0",
    "rescript": "^9.1.4"
  },
  "dependencies": {
    "@kaiko-internal/transaction": "1.0.0"
  }
}

请注意,第二个项目使用 ReScript 作为主要语言并包含以下行:

@module("@kaiko-internal/transaction") external transaction: 'a = "default"

(目前该文件transaction.js有点难以用 ReScript 编写)

现在在第二个项目中,我依赖于@kaiko/reindexed这样:

{
  "dependencies": {
    "@kaiko/reindexed": "git+ssh://git@gitlab.com:kaiko-systems/ReIndexed.git#workspaces"
   }
}

但是当我运行yarn并尝试编译这个项目时,我没有得到正确的@kaiko/reindexed及其依赖关系,它基本上无法安装@kaiko-internal/transaction,即import * from '@kaiko-internal/transaction';失败。

有没有办法从工作区的 monorepo 安装几个依赖项?

标签: yarn-workspacesrescript

解决方案


您可以将事务添加为本地包:

  "dependencies": {
    "@kaiko-internal/transaction": "file:../transaction"
  }

在您需要做yarn installnpm install 之后,您将在 node_modules 中链接到事务


推荐阅读