如何防止Jest将.eslintrc.js配置文件识别为测试文件执行?
解决Jest误识别测试目录下ESLint配置为测试文件的方案
你可以从两种思路解决这个问题,二选一即可:
- 方案1:精准限定Jest的测试文件匹配规则
修改根目录下的jest.config.js,明确指定Jest只匹配带.test.js/.spec.js后缀的文件,自动过滤掉配置类文件:
// jest.config.js module.exports = { // 其余原有配置保留 testMatch: ["**/__tests__/**/*.test.js", "**/?(*.)+(spec|test).[jt]s?(x)"] }
- 方案2:直接配置Jest忽略指定文件
在jest.config.js中添加忽略规则,直接排除__tests__下的ESLint配置文件,也可以全局排除所有ESLint配置文件:
// jest.config.js module.exports = { // 其余原有配置保留 // 仅排除测试目录下的ESLint配置 testPathIgnorePatterns: ["/node_modules/", "<rootDir>/__tests__/.eslintrc.js"] // 如需全局排除所有.eslintrc.js,可替换为: // testPathIgnorePatterns: ["/node_modules/", "\\.eslintrc\\.js$"] }
如果不想维护两层ESLint配置,也可以直接调整根ESLint配置的规则,从根源避免测试目录下存在额外配置文件:
修改根目录的.eslintrc.js,新增overrides字段,指定仅对测试文件生效的Jest规则:
// .eslintrc.js module.exports = { // 其余原有配置保留 overrides: [ { files: ["**/__tests__/**/*.js", "**/*.test.js"], plugins: ["jest"], extends: ["plugin:jest/recommended"], rules: { // 自定义Jest专属校验规则 } } ] }
配置完成后可以执行jest --listTests命令验证,若输出列表中没有__tests__/.eslintrc.js则代表配置生效。
内容的提问来源于stack exchange,提问作者Ben Blank
相关产品推荐
相关产品推荐

