如何使用外部 npm 包开发成 Yarn PnP monorepo?

问题描述 投票:0回答:1

我确实必须使用大型 Yarn PnP mono 存储库(约 30 个包和 3 个微型应用程序)。

其中一个包(

package-b
)正在使用外部npm包
package-a
(使用
npm
作为包管理器),它不是我需要使用的monorepo的一部分。

开发 npm

package-a
(Mono 存储库外部)并在 Yarn PnP
package-b
(Mono 存储库的一部分)中测试它的正确方法是什么?

我使用的版本:

$ yarn --version
4.1.1
$ node --version # (same throughout all projects"
v18.15.0
$ npm --version
9.5.0

这是我尝试过的:

纱线链接

$ cd /Users/user/gitlab.com/org/package-a
$ npm install
$ npm run build
$ yarn link
$ cd /Users/user/gitlab.com/org/monorepo/package-b
$ yarn link package-a
Usage Error: Invalid destination 'package-a'; Can't link the project to itself

$ yarn link [-A,--all] [-p,--private] [-r,--relative] ...

这个错误绝对很奇怪,因为我没有链接到同一个包(100%确认)。

resolutions
(传送门)

project-b/package.json

  ...
  "resolutions": {
    "package-a": "portal:/Users/user/gitlab.com/org/package-a"
  },
  ...

我重新运行了纱线

(mono repo level)
。从头开始重建所有包。未显示更改。

dependencies
(传送门)

project-b/package.json

  "dependencies": {
    "package-a": "portal:/Users/user/gitlab.com/org/package-a",
  }

当我构建我的 Mono 存储库时,我得到:

Module not found: Error: Can't resolve 'package-a' in '/Users/myuser/gitlab.com/org/monorepo/.yarn/__virtual__/package-b-virtual-126d6aafbe/1/packages/package-b/dist/components/SomeComponent/util'
 @ ../..

我确认

/Users/user/gitlab.com/org/package-a/dist
存在并且已完全构建。我可以在其他基于
npm
的项目中使用这个包,没有任何问题。

npm yarnpkg yarn-workspaces pnpm yarn-v2
1个回答
0
投票

我能够通过完全卸载该软件包并使用

portal

重新安装它来获得工作链接
$ yarn remove package-a
$ yarn add package-a@portal:/Users/user/gitlab.com/org/package-a

之后,我重建了 mono 仓库。由于我在

portal
vite
中将
package-a
与实时构建/刷新 (
package-b
) 结合使用,因此
package-a
中的更改将立即可用。

© www.soinside.com 2019 - 2024. All rights reserved.