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

如何用ESLint/TypeScript ESLint禁止.js/.jsx文件进入代码库?

禁止纯JavaScript文件提交并支持绕过限制的实现方案

针对大规模JS转TS迁移场景,有两个现成的简便方案,无需自定义复杂脚本或规则:

方案一:利用ESLint内置规则 no-restricted-files

依托你已有的ESLint工具链即可快速实现:

  1. 在ESLint配置文件(如.eslintrc.js)中添加规则:
module.exports = {
  rules: {
    "no-restricted-files": [
      "error",
      {
        patterns: ["**/*.js", "**/*.jsx"]
      }
    ]
  }
};

只要代码库中出现.js/.jsx文件,ESLint就会抛出错误,配合CI或pre-commit钩子即可阻止提交。

  1. 绕过限制的方法:
  • 在需要保留的JS文件顶部添加禁用注释:
/* eslint-disable no-restricted-files */
  • 或在ESLint配置中批量排除特定目录的文件:
module.exports = {
  overrides: [
    {
      files: ["src/legacy/**/*.js"],
      rules: {
        "no-restricted-files": "off"
      }
    }
  ]
};

方案二:结合lint-staged + Husky做提交前文件检查

如果希望更精准拦截提交行为,可通过pre-commit钩子直接检查文件类型:

  1. 安装依赖:
npm install husky lint-staged --save-dev
  1. 在package.json中配置钩子:
{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{js,jsx}": [
      "bash -c 'echo \"Error: JS/JSX files are restricted. Use --no-verify to bypass if necessary.\" && exit 1'"
    ]
  }
}

提交前若暂存区存在.js/.jsx文件,会直接抛出错误终止提交。

  1. 绕过限制的方法:
  • 提交时添加参数跳过钩子:
git commit --no-verify -m "提交遗留JS文件"
  • 也可自定义脚本,通过提交信息标记放行(如检测[ALLOW_JS]):
#!/bin/bash
COMMIT_MSG=$(git log --format=%B -n 1 HEAD)
if [[ ! $COMMIT_MSG =~ \[ALLOW_JS\] ]]; then
  JS_FILES=$(git diff --cached --name-only | grep -E '\.(js|jsx)$')
  if [[ -n $JS_FILES ]]; then
    echo "Error: JS/JSX files are restricted. Add [ALLOW_JS] to commit message to bypass."
    exit 1
  fi
fi

将脚本保存为check-js-files.sh,替换lint-staged中的命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:47:17