monorepo 路径别名问题,如何配置?-灵析社区

ciiiiinema

如下图的拓扑图所示,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

阅读量:154

点赞量:0

问AI
一般支持 "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" (https://link.segmentfault.com/?enc=49yt0NgicKv6CNGbPIbWKw%3D%3D.dQPRnSmK9O41Dufcof6HhKdcKVTf63zOw2K%2F7JbL8gE%3D) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241012/9fb160993233903bbec1bd0b5c06f9ed.png) 包与包之间生产环境下相互引用,通常有几种方案 * 所有的包开发环境都用 "build --watch" 这种方式,就都不需要配 "alias",但包需要按照依赖顺序来构建,且不能有循环依赖 * 所有包正常起 dev,但都需要配置对应包的 "alias" * 还有一种方案,就是写个脚本,开发环境下把每个包 package.json 里面的入口文件替换成源码入口,生产环境再替换回构建产物的入口