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
包与包之间生产环境下相互引用,通常有几种方案
- 所有的包开发环境都用
build --watch
这种方式,就都不需要配alias
,但包需要按照依赖顺序来构建,且不能有循环依赖 - 所有包正常起 dev,但都需要配置对应包的
alias
- 还有一种方案,就是写个脚本,开发环境下把每个包 package.json 里面的入口文件替换成源码入口,生产环境再替换回构建产物的入口
以上是 monorepo 路径别名问题,如何配置? 的全部内容, 来源链接: utcz.com/p/935358.html