我将 ESLint 与打字稿结合使用,并编写了如下所示的
eslint.config.mjs
。
import importPlugin from "eslint-plugin-import";
import js from "@eslint/js";
import ts from 'typescript-eslint';
export default ts.config({
files: ["src/**/*.ts"],
extends: [
js.configs.recommended,
...ts.configs.recommended,
importPlugin.flatConfigs.recommended,
importPlugin.flatConfigs.typescript,
],
languageOptions: {
ecmaVersion: 5,
sourceType: "script",
parserOptions: {
tsconfigRootDir: ".",
project: ["./tsconfig.json"],
},
},
rules: {/* omitted here because it's so long */}
});
使用此配置运行
eslint .
会导致以下错误:
<PROJECT-ROOT>/built/index.js
<row>:<col> error Definition for rule '@typescript-eslint/no-unnecessary-condition' was not found @typescript-eslint/no-unnecessary-condition
<row>:<col> warning Unused eslint-disable directive (no problems were reported from 'no-constant-condition')
(and non-problematic warnings for src/**/*.ts)
问题是它的 linting
./built/index.js
未包含在配置中的 files
字段中。
它的值是 ["src/**/*.ts"]
并且应该意味着 ESLint 应该只扫描 .ts
文件夹中的 src
文件。
错误消息本身是可以理解的,因为 ESLint 正在扫描
.js
文件,而 @typescript-eslint/no-unnecessary-condition
不用于此目的。
附加信息:该项目在
.js
或.mjs
之外有一些./src
或./built
文件,并且它们似乎没有被扫描。
附加信息2:添加
ignores: ["built/"]
不起作用。 "built/*"
、"built/**/*"
、"built/index.js"
结果相同。
来自 https://eslint.org/docs/latest/use/configure/configuration-files#specifying-files-and-ignores:
您可以使用
和files
的组合来确定配置对象应应用到哪些文件以及不应用到哪些文件。默认情况下,ESLint 会检查与模式ignores
、**/*.js
和**/*.cjs
匹配的文件。这些文件始终匹配,除非您使用 globalignores 显式排除它们。**/*.mjs
export default ts.config(
{
ignores: ["**/*.js"]
}
{
files: ["src/**/*.ts"],
// ...
}
);