build: add eslint.config.cjs for JavaScript targets on ESLint v8 (gh54 part V)#10967
build: add eslint.config.cjs for JavaScript targets on ESLint v8 (gh54 part V)#10967Planeshifter wants to merge 2 commits intophilipp/gh54-ts-toolchain-bumpfrom
eslint.config.cjs for JavaScript targets on ESLint v8 (gh54 part V)#10967Conversation
b5e37c5 to
6b4b53e
Compare
676204c to
1b253a7
Compare
1b253a7 to
fd4e835
Compare
6b4b53e to
b7de8e9
Compare
fd4e835 to
6cba0ae
Compare
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
b7de8e9 to
255a35c
Compare
6cba0ae to
338fb5d
Compare
eslint.config.cjs for JavaScript targets on ESLint v8eslint.config.cjs for JavaScript targets on ESLint v8 (gh54 part V)
255a35c to
28cbc14
Compare
0d008d7 to
0705d6b
Compare
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
Progresses stdlib-js/metr-issue-tracker#54.
Description
This pull request:
eslint.config.cjsflat config alongside the legacy.eslintrc.*configurationlib/node_modules/@stdlib/_tools/eslint/rules/scripts/plugin.js.etc/eslint/rules/.structuredClonelimitations in ESLint's flat config internals.globalspackage for flat config environment definitions..eslintrc.*files remain in place as the default workflow.Related Issues
This pull request has the following related issues:
Questions
Files under
lib/node_modules/are hard-ignored by ESLint v8 flat config (**/node_modules/**is always ignored). Fulllib/linting via flat config requires ESLint v9, which allows!**/node_modules/ignore overrides. This is expected and will be resolved in PR 11.Other
Stacked on #10966. Usage:
ESLINT_USE_FLAT_CONFIG=true npx eslint -c eslint.config.cjs <file>.Checklist
AI Assistance
If you answered "yes" above, how did you use AI assistance?
Disclosure
This PR was written primarily by Claude Code.
@stdlib-js/reviewers