build: add `eslint.config.cjs` for JavaScript targets on ESLint v8 (gh54 part V) by Planeshifter · Pull Request #10967 · stdlib-js/stdlib
Planeshifter
changed the title
build: add
build: add eslint.config.cjs for JavaScript targets on ESLint v8eslint.config.cjs for JavaScript targets on ESLint v8 (gh54 part V)
Add flat config alongside the legacy `.eslintrc.*` configuration:
- Create `eslint.config.cjs` with base JS config, override blocks
for benchmarks, examples, tests, and REPL namespace files
- Inline stdlib rules as a runtime plugin object via
`lib/node_modules/@stdlib/_tools/eslint/rules/scripts/plugin.js`
- Reuse existing rule definitions from `etc/eslint/rules/`
- Separate non-clonable rule options (remark plugin instances) from
the main rules object to work around `structuredClone` limitations
in ESLint's flat config internals
- Add `globals` package for flat config environment definitions
- Legacy `.eslintrc.*` files remain in place as the default workflow
Usage (requires ESLint v8 with flat config enabled):
ESLINT_USE_FLAT_CONFIG=true npx eslint -c eslint.config.cjs <file>
Note: files under `lib/node_modules/` are hard-ignored by ESLint v8
flat config. Full `lib/` linting via flat config requires ESLint v9,
which allows `!**/node_modules/` ignore overrides.
Ref: stdlib-js/metr-issue-tracker#54
Add TypeScript-specific flat config blocks for `**/*.d.ts` and `**/test/**/*.ts` files: - Configure `@typescript-eslint/parser` with `parserOptions.project` pointing to the root `tsconfig.json` - Register `@typescript-eslint`, `@stylistic/ts`, `jsdoc`, `import`, `expect-type`, and `stdlib` plugins - Reuse the existing TypeScript rules from `etc/eslint/rules/typescript.js` - Disable `jsdoc/require-jsdoc` for TypeScript test files Ref: stdlib-js/metr-issue-tracker#54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters