monorepo 路径别名问题,如何配置?

如下图的拓扑图所示,common是a,b,c三个项目公共引用的,如何给这个common配置路径别名,并且配置后引用它的a,b,c也可以同样生效的?

root
├── package.json
├── pnpm-workspace.yaml
├── packages
├── common

├── package.json

├── utils

├── package.json

├── A

├── package.json

├── B

├── package.json

├── C

├── package.json


回答:

一般支持 workspace 的工具都提供了单独的协议来访问内部包,比如 pnpm

// a package.json

{

"name": "a",

"version": "1.0.0",

"devDependencies": {

"common": "workspace:^1.0.0",

}

}

// common package.json

{

"name": "common",

"version": "1.0.0",

"devDependencies": {

"a": "workspace:^1.0.0",

}

}

https://www.pnpm.cn/workspaces
monorepo 路径别名问题,如何配置?

包与包之间生产环境下相互引用,通常有几种方案

  • 所有的包开发环境都用 build --watch 这种方式,就都不需要配 alias,但包需要按照依赖顺序来构建,且不能有循环依赖
  • 所有包正常起 dev,但都需要配置对应包的 alias
  • 还有一种方案,就是写个脚本,开发环境下把每个包 package.json 里面的入口文件替换成源码入口,生产环境再替换回构建产物的入口

以上是 monorepo 路径别名问题,如何配置? 的全部内容, 来源链接: utcz.com/p/935358.html

回到顶部