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

JavaScript Monorepo中Lint-Staged配置报错问题求助

问题分析与解决方案

疑问1:暂存web文件却处理mobile目录的原因

你的lint-staged配置里的tsc命令存在两处关键问题:

  • 排除参数误用了全角破折号—-exclude,而非有效的半角--exclude,导致参数完全失效;
  • 执行tsc --noEmit时未指定--project参数,TypeScript默认加载根目录的tsconfig.base.json。该根配置未明确include/exclude规则,会默认扫描整个项目目录,因此会处理到apps/mobile下的文件。

疑问2:mobile的jsx配置生效却报错的原因

报错时TypeScript使用的是根目录的tsconfig.base.json,这个配置没有设置jsx编译选项。即便mobile自身的tsconfig配置了jsx: "react-native",但由于执行tsc时未指定加载mobile的配置,根配置的缺失会导致扫描到mobile的tsx文件时触发--jsx未设置的错误。

修复方案

修改lint-staged.config.cjs中的tsc命令,明确指定使用web项目的tsconfig,确保仅检查web相关文件:

module.exports = {
  'apps/web/**/*.{ts,tsx,cjs}': [
    'pnpm --filter web exec eslint -c ./.eslintrc.cjs --ignore-path ./.eslintignore --fix',
    // 指定web项目的tsconfig执行类型检查
    () => 'tsc --noEmit --project apps/web/tsconfig.json',
  ],
};

额外建议:如果根目录的tsconfig无需扫描子项目,可添加exclude: ["apps"]配置,避免后续其他命令误扫描子项目文件,但核心修复仍是指定web的tsconfig执行类型检查。


内容的提问来源于stack exchange,提问作者Amir Ben Shimol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:17:30