Conversation
Bump the project's Node requirement to v20 and align tooling and docs. Updates package.json engines and Volta pin, .nvmrc, README, CONTRIBUTING, copilot-instructions.md, and the getting-started docs to require Node.js 20. Adjust CI workflows by adding concurrency groups to ossf-scorecard, spellcheck, and super-linter, and remove Node 18 from the test matrix so tests run on 20/22/24. These changes standardize the development environment on Node 20 LTS and reduce duplicated CI runs.
There was a problem hiding this comment.
Code Review
This pull request updates the project to require Node.js v20, aligning documentation and configuration files accordingly. The changes are generally sound and move the project to a modern LTS version of Node.js. However, I've identified a critical issue: the specified Node.js version 20.20.1 in both .nvmrc and package.json (for Volta) is not a valid Node.js release. This will break the development environment setup for anyone using nvm or volta. I've provided suggestions to correct this to a valid LTS version.
There was a problem hiding this comment.
Pull request overview
This PR raises the core HTMLHint project’s minimum supported Node.js version to 20+, updates version pins, aligns docs to the new requirement, and tweaks CI to reduce redundant workflow executions.
Changes:
- Update Node requirement and tooling pins (engines/Volta and
.nvmrc) to Node 20. - Refresh docs to state Node.js 20+ is required.
- Adjust CI: remove Node 18 from the test matrix and add workflow-level concurrency controls to reduce duplicate runs.
Reviewed changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| website/src/content/docs/getting-started.mdx | Adds Node.js 20+ requirement statement to getting-started docs. |
| package.json | Bumps engines.node to >=20 and Volta pin to Node 20.20.1. |
| package-lock.json | Aligns lockfile top-level engines metadata with Node >=20. |
| README.md | Documents Node.js 20+ requirement for users. |
| .nvmrc | Pins nvm to Node 20.20.1 to match Volta. |
| .github/workflows/test.yml | Removes Node 18 from CI test matrix (now 20/22/24). |
| .github/workflows/super-linter.yml | Adds concurrency configuration to reduce duplicate linter runs. |
| .github/workflows/spellcheck.yml | Adds concurrency configuration for spellcheck runs. |
| .github/workflows/ossf-scorecard.yml | Adds concurrency configuration for scorecard runs. |
| .github/copilot-instructions.md | Updates Copilot guidance to reflect Node 20+ / Volta pin. |
| .github/CONTRIBUTING.md | Adds “Development setup” section documenting Node 20+ requirement. |
| - 'dependabot/**' | ||
|
|
||
| concurrency: | ||
| group: super-linter-${{ github.event.pull_request.number || github.ref }} |
There was a problem hiding this comment.
The concurrency group here differs between push and pull_request runs (PR uses the number; push uses the ref). That means a push-triggered run on a PR branch won’t be canceled when the pull_request-triggered run starts, so you can still get duplicate runs for the same branch/PR. Consider using a shared key like the head branch name for PRs (e.g., github.head_ref) and github.ref_name for pushes, or drop the push trigger if pull_request coverage is sufficient.
| group: super-linter-${{ github.event.pull_request.number || github.ref }} | |
| group: super-linter-${{ github.head_ref || github.ref_name }} |
Bump the project's Node requirement to v20 and align tooling and docs. Updates package.json engines and Volta pin, .nvmrc, README, CONTRIBUTING, copilot-instructions.md, and the getting-started docs to require Node.js 20. Adjust CI workflows by adding concurrency groups to ossf-scorecard, spellcheck, and super-linter, and remove Node 18 from the test matrix so tests run on 20/22/24. These changes standardize the development environment on Node 20 LTS and reduce duplicated CI runs.