一般支持 "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 里面的入口文件替换成源码入口,生产环境再替换回构建产物的入口