The previous fix (commit a4ee36b6) added '.pnpmfile.cjs' to the
globalIgnores() call at the END of the admin-web eslint config,
but flat-config v9 only applies ignores from the FIRST config
object that contains an 'ignores' key — every subsequent config
item is matched against the file before the late ignore is read.
That's why CI run 66 still failed with the same require() error
even after the dashboard-level ignore was in place.
Fix: declare an explicit '{ ignores: [...] }' at array index 0,
which is the documented eslint v9 pattern for skipping files
before any rule config attaches:
defineConfig([
{ ignores: ['**/.pnpmfile.cjs', '**/*.cjs'] }, // <-- now first
...nextVitals,
...nextTs,
{ rules: { ... } },
globalIgnores([ ... ]),
])
Verified locally:
cd dashboards/admin-web && npx eslint . -> 0 errors, 0 warnings
44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
import { defineConfig, globalIgnores } from "eslint/config";
|
|
import nextVitals from "eslint-config-next/core-web-vitals";
|
|
import nextTs from "eslint-config-next/typescript";
|
|
|
|
const eslintConfig = defineConfig([
|
|
// Ignores MUST come first so they apply to every subsequent
|
|
// config item. globalIgnores() at the bottom of the array works
|
|
// for *.next / out / build / next-env.d.ts because eslint-config-
|
|
// next handles those internally, but .pnpmfile.cjs is not in that
|
|
// default list — declaring an explicit `{ ignores: [...] }` block
|
|
// at index 0 is the documented way to make eslint v9 skip files
|
|
// entirely before any config rules apply.
|
|
{
|
|
ignores: [
|
|
"**/.pnpmfile.cjs",
|
|
"**/*.cjs",
|
|
],
|
|
},
|
|
...nextVitals,
|
|
...nextTs,
|
|
{
|
|
rules: {
|
|
"react-hooks/set-state-in-effect": "off",
|
|
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_" }],
|
|
},
|
|
},
|
|
// Override default ignores of eslint-config-next.
|
|
globalIgnores([
|
|
// Default ignores of eslint-config-next:
|
|
".next/**",
|
|
"out/**",
|
|
"build/**",
|
|
"next-env.d.ts",
|
|
// .pnpmfile.cjs is a pnpm install hook (CommonJS by design).
|
|
// The TypeScript no-require-imports rule would otherwise flag
|
|
// every require() call in this file. eslint-config-next does NOT
|
|
// ignore .cjs by default.
|
|
".pnpmfile.cjs",
|
|
"**/*.cjs",
|
|
]),
|
|
]);
|
|
|
|
export default eslintConfig;
|