如何在eslint中静音关于被忽略文件的警告

时间:2016-06-20 16:46:11

标签: eslint

设置eslint并在忽略列表中添加一些文件后,每次运行eslint时都会生成有关被忽略文件的警告:

 /path/to/file/name.min.js
  0:0  warning  File ignored because of a matching ignore pattern. Use "--no-ignore" to override

这个警告怎么能被压制?

6 个答案:

答案 0 :(得分:4)

目前我所知道的一个解决方法是--quiet选项,它会抑制所有警告。当然,如果你的配置中有“警告”规则,这是没有意义的。

另一种不显示警告的方法是使用目录名称:eslint src而不是通配模式:eslint src/*

答案 1 :(得分:3)

你不能,他们不打算修复它,因为他们不认为它是一个错误。因此,如果您传入一个被忽略的文件,它会告诉您它没有处理linting规则,因为它被忽略了:https://github.com/eslint/eslint/issues/5623

我们在提交之前对lint代码运行预提交挂钩,因此最终需要编写一些额外的代码来区分实际的警告和文件被忽略的警告,并且只有在抛出实际警告或错误时才会失败。

答案 2 :(得分:2)

检查您是否使用不带引号的 glob 参数运行 eslint。如果是这样,请将其放在引号中。

  • 不好:eslint src/**
  • 好:eslint "src/**"

为什么?

如果您使用不带引号的 cli glob 模式调用 eslint,例如eslint src/**,该 glob 被扩展到所有匹配的文件中并作为一个巨大的 cli 参数列表传递给 eslint。例如eslint path/to/file/name.min.js src/foo.js src/bar.js src/manymore.js .....

因此,当 eslint 由于您的忽略模式而忽略文件,但该文件已明确作为命令行参数传递时,eslint 会警告我们

<块引用>

eslint 说:
“嗯,我因为忽略模式而忽略了 /path/to/file/name.min.js,但是你明确地将它传递给了我 lint,所以这一定不是你想要的,对吧?”

但是当您在引号中传递glob时,例如eslint "src/**",glob 没有扩展到很多参数;相反,它只是一个字符串参数,而 eslint 知道它是一个 glob,但由于它负责确定要匹配的文件,因此可以在尊重 eslintignore 的同时这样做。所以 eslint 认为它应该警告你并没有什么奇怪的事情发生。

答案 3 :(得分:1)

尝试使用 --ext。就我而言,我替换了以下匹配项:

eslint modules/**/*{js,vue}

到:

eslint --ext .js,.vue .

带有文件的警告被忽略,因为... 已经消失,但其他警告仍然存在。

答案 4 :(得分:0)

Eslint 在告诉它 lint 文件时抛出此警告,同时忽略文件。 src/* 实际上是唯一地传递每个文件单个文件,而只传递 src 会让 eslint 忽略文件而没有警告

如果您使用 lint-staged,它将传递与 lint-staged regex 匹配的每个单独的 staged 文件。如果匹配,你把它放在 ignore 中,eslint 会混淆并输出警告

 "lint-staged": {
    "*.{ts,tsx,js}": [ // <-- this regex needs to be changed to not match your files
      "eslint --fix --max-warnings 0 --ignore-path '.eslintignore' --plugin tsc --rule 'tsc/config: [2, {configFile: \"./tsconfig.json\"}]'",
      "prettier --ignore-path .eslintignore --write"
    ],
    "*.js": "eslint --cache --fix",
    "*.{js,css,md}": "prettier --write"
  },

对我来说,我只是想排除一些js文件,所以我把"*.{ts,tsx,js}"里面的js匹配去掉了

答案 5 :(得分:-6)