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

如何在Bazel 5.x环境下为TypeScript项目配置ESLint?

在Bazel 5.x中为TypeScript项目配置ESLint的正确方式

问题根源

你之前的错误是因为eslint_test规则(基于nodejs_test封装)并没有config这个属性,不能直接通过该字段指定配置文件,必须通过命令行参数传递。

正确配置步骤

1. 调整BUILD.bazel中的eslint_test规则

将配置文件加入srcs列表,并通过args传递--config参数指定配置文件路径:

# 加载eslint_test规则
load("@npm//eslint:index.bzl", "eslint_test")

eslint_test(
    name = "eslint",
    # 包含所有需要检查的TS/TSX文件,以及ESLint配置、忽略文件
    srcs = glob([
        "**/*.ts",
        "**/*.tsx",
        ".eslintrc.js",
        ".eslintignore", # 如果项目中有这个文件的话
    ]),
    args = [
        # 通过$(location)宏获取Bazel沙箱内的配置文件路径
        "--config", "$(location .eslintrc.js)",
        # 指定要检查的文件扩展名
        "--ext", ".ts,.tsx",
        # 指定检查目录(对应srcs里的文件范围)
        ".",
    ],
    # 依赖配置:添加ESLint及项目中用到的插件、解析器
    deps = [
        "@npm//eslint",
        "@npm//typescript",
        "@npm//@typescript-eslint/eslint-plugin",
        "@npm//@typescript-eslint/parser",
        # 其他你.eslintrc.js中用到的依赖,比如eslint-plugin-react等
    ],
)

2. 关键说明

  • 必须将.eslintrc.js加入srcs:Bazel的沙箱机制会隔离构建环境,只有加入srcs的文件才会被放入沙箱,$(location)宏才能正确解析其路径。
  • 若使用.eslintignore,同样要加入srcs,ESLint会自动识别同目录下的该文件,也可以通过--ignore-path $(location .eslintignore)显式指定。
  • deps中要包含所有.eslintrc.js里用到的ESLint插件、解析器,否则在沙箱中运行时会找不到这些依赖。

3. 运行测试

保持原命令即可:

bazel test //ui/web:eslint

额外注意事项

  • 确保你的@bazel/nodejs版本与Bazel 5.x兼容,避免版本不兼容导致的其他问题。
  • 如果项目中有多个目录需要检查,可以拆分不同的eslint_test目标,或者调整glob范围覆盖更多文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:16:08