chore!: align with eslint 10 on node.js >=20.19.0#121
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This pull request modernizes the project by upgrading to ESLint 10 (which uses the new flat config format) and dropping support for Node.js 18 in favor of Node.js >=20.19.0. The changes align dependencies, configuration, and testing infrastructure with the new requirements while adding automated release workflows.
Changes:
- Migrated from legacy
.eslintrcto flat config (eslint.config.js) for ESLint 9+ compatibility - Updated minimum Node.js version from 18.6.0 to 20.19.0 and expanded test matrix to include Node 20, 22, 24, and 25
- Enhanced test robustness by adding ANSI color code stripping to ensure consistent assertions across environments
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.json | Updated TypeScript config to extend node20.json instead of node18.json |
| package.json | Updated engines requirement, upgraded dependencies (ESLint 9, removed individual ESLint plugins), and simplified lint script |
| eslint.config.js | New flat config file using @voxpelli/eslint-config |
| .eslintrc | Removed legacy ESLint configuration file |
| cli.js | Changed path import from named import to namespace import for unicorn/import-style compliance |
| cli-wrapper.cjs | Updated version-guard to require Node 20.19 instead of 18.6 |
| test/helpers.js | Added ANSI stripping function to normalize test output |
| test/test-readme.js | Added ANSI stripping to output normalization and eslint-disable for security/detect-non-literal-fs-filename |
| test/integration.js | Added eslint-disable for unicorn/import-style to allow named imports from node:path |
| .github/workflows/nodejs.yml | Updated test matrix from Node 18,20,22 to 20,22,24,25 |
| .github/workflows/release-please.yml | New automated release workflow using release-please with OIDC |
| .github/workflows/compliance.yml | New PR compliance check workflow |
| .github/release-please/config.json | Release-please configuration with changelog sections |
| .github/release-please/manifest.json | Version manifest tracking current version 9.3.0 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
84a8dfa to
6cbdeb3
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces several updates to modernize the project, improve automation, and enhance test reliability. Notably, it upgrades Node.js and dependency requirements, migrates to the new flat ESLint config, adds automated release and compliance workflows, and improves test output normalization. Below are the most important changes grouped by theme:
Automation & CI/CD Improvements
release-please.yml) and compliance checks (compliance.yml), and configured release-please with custom changelog sections and manifest tracking. (.github/release-please/config.json [1] .github/release-please/manifest.json [2] .github/workflows/release-please.yml [3] .github/workflows/compliance.yml [4]Dependency & Engine Upgrades
node:pathaspathModulefor compatibility with newer Node.js versions. (cli.js [1] [2]Linting Configuration Modernization
.eslintrcto the new flat config (eslint.config.js), and removed unnecessary ESLint plugins and options from scripts. (.eslintrc [1] eslint.config.js [2] package.json [3]Test Robustness Improvements
Code Quality & Minor Fixes
These changes collectively improve the maintainability, automation, and reliability of the project.