Closed3

eslintのignoresでファイルが除外されない?そんなときに調べたこと

shinoyushinoyu

Flat Configを使って設定する場合の話。

import js from "@eslint/js"
const { FlatCompat } = require("@eslint/eslintrc");

const compat = new FlatCompat({
  baseDirectory: __dirname,
});

const prettierConfig = compat.extends(
  "plugin:prettier/recommended",
);


const config = {
  files: ["**/*.js", "**/*.ts"],
  ignores: ["**/public/assets/**/*"],
...
}
export  module [
  js.configs.recommended,
  config,
  ...prettierConfig
]

まあ、こういう設定になっているものがあるとする。

shinoyushinoyu

この時、自分たちのプロダクトで使う設定として定義したconfigにignoresを書いても、そのignoresを書いたブロックの処理のみignoresが適用され、pluginとして設定されたものに対しては当然ignoresは効きません。DEBUG=eslint:* npx eslint . とかデバッグオプションを付けて実行すると、プラグインでの処理中に普通にファイルが読み込まれていることがわかります。

これは明確にeslintのDocsに記載があって、
https://eslint.org/docs/latest/use/configure/ignore

 your eslint.config.js file, if an ignores key is used without any other keys in the configuration object, then the patterns act as global ignores.

つまり、ignoresだけのブロックを定義してくれ、って話になります。

shinoyushinoyu

つまり冒頭にあった、設定をこうすればよいんじゃ。

import js from "@eslint/js"
const { FlatCompat } = require("@eslint/eslintrc");

const compat = new FlatCompat({
  baseDirectory: __dirname,
});

const prettierConfig = compat.extends(
  "plugin:prettier/recommended",
);


const config = {
  files: ["**/*.js", "**/*.ts"],
...
}

const ignoreConfig = {
  ignores: ["**/public/assets/**/*"]
}

export  module [
  ignoreConfig,
  js.configs.recommended,
  config,
  ...prettierConfig
]

これを記載することで、すべての設定ブロックに対して、ignoresがグローバルに効くようになります。

このスクラップは4ヶ月前にクローズされました