You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用Bzlmod的Bazel 7.4:能否修改execRoot或_main仓库名称?

解决方案

1. 修改主仓库名称(替换_main)

在项目根目录的MODULE.bazel文件里,把module指令的name参数改成你之前的工作区名称即可:

module(
    name = "your_old_workspace_name",
    # 原有的version、compatibility等参数保留不变
)

改完重新运行Bazel构建,execRoot里的路径就会变成execroot/your_old_workspace_name/...,原来TS文件里<workspace_name>/APP_NAME/...格式的导入就能正常生效,不用修改任何业务文件。

2. 不修改仓库名的兼容方案

如果不想调整module名称,也可以通过TypeScript路径映射来兼容旧导入:

  • 在项目的tsconfig.json中添加路径映射配置:
{
  "compilerOptions": {
    "paths": {
      "your_old_workspace_name/*": ["_main/*"]
    }
  }
}
  • 然后在Bazel的ts_library规则中指定这个tsconfig文件,或者直接在规则内配置paths:
ts_library(
    name = "your_target_lib",
    srcs = glob(["**/*.ts"]),
    tsconfig = "//:tsconfig.json",
    # 也可以直接在这里写路径映射,不用依赖tsconfig
    # paths = {"your_old_workspace_name/*": ["_main/*"]},
)

关于execRoot完整路径的自定义

Bazel的execRoot路径是由内部缓存机制自动生成管理的,没办法直接自定义整个路径,但通过修改module名称替换掉路径里的_main部分,已经能解决你当前的导入失效问题。

内容的提问来源于stack exchange,提问作者Sajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:52:39