Turbo repo中如何让内部开发包导入外部包的本地构建产物?
当然可以,给你几个实用的方案:
方案1:通过Monorepo工作区依赖 + 调整packageA入口
- 先修改
packages/packageA/package.json,把入口指向build目录:{ "main": "./build/index.js", "module": "./build/index.mjs" // 如果你用ESM规范的话加上这个 } - 在
packages/development/dev-packageA/package.json里,把packageA的依赖改成工作区引用:{ "dependencies": { "packageA": "workspace:*" } } - 配置Turbo的任务依赖,确保dev-packageA运行前先构建packageA:
在项目根目录的turbo.json里添加管道规则:
这样每次启动dev-packageA的开发服务时,Turbo会自动先执行packageA的build操作,dev-packageA导入的就是最新的build目录内容,完全不用发布新版本。{ "pipeline": { "build": { "dependsOn": ["^build"], "outputs": ["build/**"] }, "dev": { "dependsOn": ["^build"] } } }
方案2:直接用相对路径导入build目录
如果只是临时测试,不想改配置,可以直接在dev-packageA的代码里用相对路径引用packageA的build文件:
import { xxx } from '../../packageA/build/index.js'
这种方式最直接,但缺点是目录结构变动时路径容易失效,适合快速验证场景。
额外提示
如果需要实时看到packageA修改后的效果,可以给packageA加一个watch命令自动重新构建,比如在packageA的package.json里:
{ "scripts": { "watch": "your-build-command --watch" } }
然后同时启动packageA的watch和dev-packageA的开发服务,就能实时同步build目录的更新。
内容的提问来源于stack exchange,提问作者cbdeveloper
相关产品推荐
相关产品推荐

