Skip to content

Remove support for Node.js less than 20.19.0 and 22.13.0#8867

Merged
jeddy3 merged 6 commits intov17from
remove-node-18-support
Dec 3, 2025
Merged

Remove support for Node.js less than 20.19.0 and 22.13.0#8867
jeddy3 merged 6 commits intov17from
remove-node-18-support

Conversation

@jeddy3
Copy link
Copy Markdown
Member

@jeddy3 jeddy3 commented Dec 2, 2025

Which issue, if any, is this issue related to?

Relates to #8859

Is there anything in the PR that needs further explanation?

20.19.0 is when require(ESM) was mark non-experimental.

(Base = v17)

@jeddy3 jeddy3 requested a review from a team as a code owner December 2, 2025 11:23
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Dec 2, 2025

🦋 Changeset detected

Latest commit: a27a019

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
stylelint Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@romainmenke
Copy link
Copy Markdown
Member

See: https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require

v23.5.0, v22.13.0, v20.19.0: This feature no longer emits an experimental warning

Can we also indicate the >= v22.13.0 constraint?

@jeddy3
Copy link
Copy Markdown
Member Author

jeddy3 commented Dec 2, 2025

Can we also indicate the >= v22.13.0 constraint?

Pushed a commit for this.

Copy link
Copy Markdown
Member

@romainmenke romainmenke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. LGTM 👍

Comment thread package.json
Comment thread .changeset/modern-years-hear.md Outdated
Co-authored-by: Masafumi Koba <473530+ybiquitous@users.noreply.github.com>
Copilot AI review requested due to automatic review settings December 3, 2025 08:12

This comment was marked as spam.

@jeddy3 jeddy3 changed the title Remove support for Node.js less than 20.19.x Remove support for Node.js less than 20.19.0 and 22.13.0 Dec 3, 2025
@jeddy3
Copy link
Copy Markdown
Member Author

jeddy3 commented Dec 3, 2025

@ybiquitous Thanks for the review. I've committed the two suggestions.

Copy link
Copy Markdown
Member

@ybiquitous ybiquitous left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. LGTM 👍🏼

@stylelint stylelint deleted a comment from Copilot AI Dec 3, 2025
@jeddy3 jeddy3 merged commit 4be6b0f into v17 Dec 3, 2025
15 checks passed
@jeddy3 jeddy3 deleted the remove-node-18-support branch December 3, 2025 10:12
This was referenced Dec 3, 2025
ybiquitous added a commit that referenced this pull request Dec 3, 2025
Follow up on PR #8867

We can now update `tsconfig.json` to fit the newly supported Node.js versions, i.e., 20.19.0 or later.

- `module` is now `nodenext`, which is officially recommended for modern Node.js projects.
  Ref https://www.typescriptlang.org/tsconfig/#module
- `moduleResolution` is no longer needed, as it defaults to `nodenext` when `module` is set to `nodenext`.
  Ref https://www.typescriptlang.org/tsconfig/#moduleResolution
- `target` is now `es2023`, which is supported by Node.js 20.19.0 and later.
  Ref https://www.typescriptlang.org/tsconfig/#target
- `lib` is now `ES2023` to match the `target`.
  Ref https://www.typescriptlang.org/tsconfig/#lib
- `skipLibCheck` is now enabled to improve build performance.
  Ref https://www.typescriptlang.org/tsconfig/#skipLibCheck
@jeddy3 jeddy3 changed the title Remove support for Node.js less than 20.19.0 and 22.13.0 Remove support for Node.js 18 and less than 20.19.0 and 22.13.0 Dec 4, 2025
@jeddy3 jeddy3 changed the title Remove support for Node.js 18 and less than 20.19.0 and 22.13.0 Remove support for Node.js less than 20.19.0 and 22.13.0 Dec 4, 2025
renovate Bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Jan 15, 2026
| datasource | package   | from    | to     |
| ---------- | --------- | ------- | ------ |
| npm        | stylelint | 16.26.1 | 17.0.0 |


## [v17.0.0](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#1700---2026-01-15)

It contains 14 breaking changes, which we've detailed in the [migrating to `17.0.0` guide](docs/migration-guide/to-17.md). Additionally, it adds 3 options to the rules and fixes 9 bugs. We've also released compatible versions of our [shared config](https://www.npmjs.com/package/stylelint-config-standard), [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint), [Node.js Rule Tester](https://www.npmjs.com/package/stylelint-test-rule-node) and [Jest preset](https://www.npmjs.com/package/jest-preset-stylelint).

- Removed: CommonJS Node.js API ([#8859](stylelint/stylelint#8859)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: `output` property in the Node.js API returned resolved object ([#8878](stylelint/stylelint#8878)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: support for Node.js less than 20.19.0 ([#8867](stylelint/stylelint#8867)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: GitHub formatter ([#8888](stylelint/stylelint#8888)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: `resolveNestedSelectors` option from `selector-class-pattern` ([#8931](stylelint/stylelint#8931)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: `checkContextFunctionalPseudoClasses` option from `selector-max-id` ([#8913](stylelint/stylelint#8913)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: default `fix` mode to `strict` ([#8889](stylelint/stylelint#8889)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `report` to be consistent and predictable in how it handles the provided position arguments ([#8217](stylelint/stylelint#8217)) ([@romainmenke](https://github.com/romainmenke)).
- Changed: `selector-max-*` syntax rules for standard CSS nesting and modern functional pseudo-classes ([#8913](stylelint/stylelint#8913)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `*-specificity` semantic rules for standard CSS nesting ([#8913](stylelint/stylelint#8913)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `no-duplicate-selectors` and `selector-no-qualifying-type` for standard CSS nesting ([#8913](stylelint/stylelint#8913)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `*-list` rules to have consistent behaviour for vendor prefixes and case ([#8912](stylelint/stylelint#8912)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `*-no-vendor-prefix` rules to have consistent behaviour for their `ignore*: []` secondary options ([#8924](stylelint/stylelint#8924)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `declaration-property-max-values` rule to have consistent behaviour for vendor prefixes ([#8926](stylelint/stylelint#8926)) ([@jeddy3](https://github.com/jeddy3)).
- Added: `except: ["after-block"]` to `custom-property-empty-line-before` ([#8921](stylelint/stylelint#8921)) ([@kovsu](https://github.com/kovsu)).
- Added: `except: ["after-block"]` to `declaration-empty-line-before` ([#8910](stylelint/stylelint#8910)) ([@kovsu](https://github.com/kovsu)).
- Added: `ignoreSelectors: []` to `no-duplicate-selectors` ([#8883](stylelint/stylelint#8883)) ([@kovsu](https://github.com/kovsu)).
- Fixed: Windows drive letter casing inconsistencies when matching patterns against file paths ([#8941](stylelint/stylelint#8941)) ([@adalinesimonian](https://github.com/adalinesimonian)).
- Fixed: CLI help to include TypeScript config files ([#8908](stylelint/stylelint#8908)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `at-rule-descriptor-no-unknown` false positives for declarations within feature-value-blocks ([#8868](stylelint/stylelint#8868)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `declaration-block-no-redundant-longhand-properties` false negatives for short and long combinations ([#8892](stylelint/stylelint#8892)) ([@nathannewyen](https://github.com/nathannewyen)).
- Fixed: `media-feature-name-no-unknown` false positives for namespaced dollar variables and range context queries ([#8890](stylelint/stylelint#8890)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `nesting-selector-no-missing-scoping-root` false positives for CSS-in-JS ([#8905](stylelint/stylelint#8905)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `no-invalid-position-declaration` false negatives for embedded blocks ([#8907](stylelint/stylelint#8907)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `selector-no-qualifying-type` false negatives for `:is/where()` ([#8940](stylelint/stylelint#8940)) ([@romainmenke](https://github.com/romainmenke)).
- Fixed: `selector-type-no-unknown` false positives for MathML 4 tags ([#8874](stylelint/stylelint#8874)) ([@jeddy3](https://github.com/jeddy3)).
renovate Bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Jan 17, 2026
| datasource | package   | from    | to     |
| ---------- | --------- | ------- | ------ |
| npm        | stylelint | 16.26.1 | 17.0.0 |


## [v17.0.0](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#1700---2026-01-15)

It contains 14 breaking changes, which we've detailed in the [migrating to `17.0.0` guide](docs/migration-guide/to-17.md). Additionally, it adds 3 options to the rules and fixes 9 bugs. We've also released compatible versions of our [shared config](https://www.npmjs.com/package/stylelint-config-standard), [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint), [Node.js Rule Tester](https://www.npmjs.com/package/stylelint-test-rule-node) and [Jest preset](https://www.npmjs.com/package/jest-preset-stylelint).

- Removed: CommonJS Node.js API ([#8859](stylelint/stylelint#8859)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: `output` property in the Node.js API returned resolved object ([#8878](stylelint/stylelint#8878)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: support for Node.js less than 20.19.0 ([#8867](stylelint/stylelint#8867)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: GitHub formatter ([#8888](stylelint/stylelint#8888)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: `resolveNestedSelectors` option from `selector-class-pattern` ([#8931](stylelint/stylelint#8931)) ([@jeddy3](https://github.com/jeddy3)).
- Removed: `checkContextFunctionalPseudoClasses` option from `selector-max-id` ([#8913](stylelint/stylelint#8913)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: default `fix` mode to `strict` ([#8889](stylelint/stylelint#8889)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `report` to be consistent and predictable in how it handles the provided position arguments ([#8217](stylelint/stylelint#8217)) ([@romainmenke](https://github.com/romainmenke)).
- Changed: `selector-max-*` syntax rules for standard CSS nesting and modern functional pseudo-classes ([#8913](stylelint/stylelint#8913)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `*-specificity` semantic rules for standard CSS nesting ([#8913](stylelint/stylelint#8913)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `no-duplicate-selectors` and `selector-no-qualifying-type` for standard CSS nesting ([#8913](stylelint/stylelint#8913)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `*-list` rules to have consistent behaviour for vendor prefixes and case ([#8912](stylelint/stylelint#8912)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `*-no-vendor-prefix` rules to have consistent behaviour for their `ignore*: []` secondary options ([#8924](stylelint/stylelint#8924)) ([@jeddy3](https://github.com/jeddy3)).
- Changed: `declaration-property-max-values` rule to have consistent behaviour for vendor prefixes ([#8926](stylelint/stylelint#8926)) ([@jeddy3](https://github.com/jeddy3)).
- Added: `except: ["after-block"]` to `custom-property-empty-line-before` ([#8921](stylelint/stylelint#8921)) ([@kovsu](https://github.com/kovsu)).
- Added: `except: ["after-block"]` to `declaration-empty-line-before` ([#8910](stylelint/stylelint#8910)) ([@kovsu](https://github.com/kovsu)).
- Added: `ignoreSelectors: []` to `no-duplicate-selectors` ([#8883](stylelint/stylelint#8883)) ([@kovsu](https://github.com/kovsu)).
- Fixed: Windows drive letter casing inconsistencies when matching patterns against file paths ([#8941](stylelint/stylelint#8941)) ([@adalinesimonian](https://github.com/adalinesimonian)).
- Fixed: CLI help to include TypeScript config files ([#8908](stylelint/stylelint#8908)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `at-rule-descriptor-no-unknown` false positives for declarations within feature-value-blocks ([#8868](stylelint/stylelint#8868)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `declaration-block-no-redundant-longhand-properties` false negatives for short and long combinations ([#8892](stylelint/stylelint#8892)) ([@nathannewyen](https://github.com/nathannewyen)).
- Fixed: `media-feature-name-no-unknown` false positives for namespaced dollar variables and range context queries ([#8890](stylelint/stylelint#8890)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `nesting-selector-no-missing-scoping-root` false positives for CSS-in-JS ([#8905](stylelint/stylelint#8905)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `no-invalid-position-declaration` false negatives for embedded blocks ([#8907](stylelint/stylelint#8907)) ([@kovsu](https://github.com/kovsu)).
- Fixed: `selector-no-qualifying-type` false negatives for `:is/where()` ([#8940](stylelint/stylelint#8940)) ([@romainmenke](https://github.com/romainmenke)).
- Fixed: `selector-type-no-unknown` false positives for MathML 4 tags ([#8874](stylelint/stylelint#8874)) ([@jeddy3](https://github.com/jeddy3)).
robbevp pushed a commit to robbevp/website-robbevanpetegem that referenced this pull request Jan 20, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [stylelint](https://stylelint.io) ([source](https://github.com/stylelint/stylelint)) | devDependencies | major | [`^16.23.1` -> `^17.0.0`](https://renovatebot.com/diffs/npm/stylelint/16.26.1/17.0.0) |

---

### Release Notes

<details>
<summary>stylelint/stylelint (stylelint)</summary>

### [`v17.0.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#1700---2026-01-15)

[Compare Source](stylelint/stylelint@16.26.1...17.0.0)

It contains 14 breaking changes, which we've detailed in the [migrating to `17.0.0` guide](docs/migration-guide/to-17.md). Additionally, it adds 3 options to the rules and fixes 9 bugs. We've also released compatible versions of our [shared config](https://www.npmjs.com/package/stylelint-config-standard), [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint), [Node.js Rule Tester](https://www.npmjs.com/package/stylelint-test-rule-node) and [Jest preset](https://www.npmjs.com/package/jest-preset-stylelint).

- Removed: CommonJS Node.js API ([#&#8203;8859](stylelint/stylelint#8859)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Removed: `output` property in the Node.js API returned resolved object ([#&#8203;8878](stylelint/stylelint#8878)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Removed: support for Node.js less than 20.19.0 ([#&#8203;8867](stylelint/stylelint#8867)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Removed: GitHub formatter ([#&#8203;8888](stylelint/stylelint#8888)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Removed: `resolveNestedSelectors` option from `selector-class-pattern` ([#&#8203;8931](stylelint/stylelint#8931)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Removed: `checkContextFunctionalPseudoClasses` option from `selector-max-id` ([#&#8203;8913](stylelint/stylelint#8913)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Changed: default `fix` mode to `strict` ([#&#8203;8889](stylelint/stylelint#8889)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Changed: `report` to be consistent and predictable in how it handles the provided position arguments ([#&#8203;8217](stylelint/stylelint#8217)) ([@&#8203;romainmenke](https://github.com/romainmenke)).
- Changed: `selector-max-*` syntax rules for standard CSS nesting and modern functional pseudo-classes ([#&#8203;8913](stylelint/stylelint#8913)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Changed: `*-specificity` semantic rules for standard CSS nesting ([#&#8203;8913](stylelint/stylelint#8913)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Changed: `no-duplicate-selectors` and `selector-no-qualifying-type` for standard CSS nesting ([#&#8203;8913](stylelint/stylelint#8913)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Changed: `*-list` rules to have consistent behaviour for vendor prefixes and case ([#&#8203;8912](stylelint/stylelint#8912)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Changed: `*-no-vendor-prefix` rules to have consistent behaviour for their `ignore*: []` secondary options ([#&#8203;8924](stylelint/stylelint#8924)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Changed: `declaration-property-max-values` rule to have consistent behaviour for vendor prefixes ([#&#8203;8926](stylelint/stylelint#8926)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Added: `except: ["after-block"]` to `custom-property-empty-line-before` ([#&#8203;8921](stylelint/stylelint#8921)) ([@&#8203;kovsu](https://github.com/kovsu)).
- Added: `except: ["after-block"]` to `declaration-empty-line-before` ([#&#8203;8910](stylelint/stylelint#8910)) ([@&#8203;kovsu](https://github.com/kovsu)).
- Added: `ignoreSelectors: []` to `no-duplicate-selectors` ([#&#8203;8883](stylelint/stylelint#8883)) ([@&#8203;kovsu](https://github.com/kovsu)).
- Fixed: Windows drive letter casing inconsistencies when matching patterns against file paths ([#&#8203;8941](stylelint/stylelint#8941)) ([@&#8203;adalinesimonian](https://github.com/adalinesimonian)).
- Fixed: CLI help to include TypeScript config files ([#&#8203;8908](stylelint/stylelint#8908)) ([@&#8203;kovsu](https://github.com/kovsu)).
- Fixed: `at-rule-descriptor-no-unknown` false positives for declarations within feature-value-blocks ([#&#8203;8868](stylelint/stylelint#8868)) ([@&#8203;kovsu](https://github.com/kovsu)).
- Fixed: `declaration-block-no-redundant-longhand-properties` false negatives for short and long combinations ([#&#8203;8892](stylelint/stylelint#8892)) ([@&#8203;nathannewyen](https://github.com/nathannewyen)).
- Fixed: `media-feature-name-no-unknown` false positives for namespaced dollar variables and range context queries ([#&#8203;8890](stylelint/stylelint#8890)) ([@&#8203;kovsu](https://github.com/kovsu)).
- Fixed: `nesting-selector-no-missing-scoping-root` false positives for CSS-in-JS ([#&#8203;8905](stylelint/stylelint#8905)) ([@&#8203;kovsu](https://github.com/kovsu)).
- Fixed: `no-invalid-position-declaration` false negatives for embedded blocks ([#&#8203;8907](stylelint/stylelint#8907)) ([@&#8203;kovsu](https://github.com/kovsu)).
- Fixed: `selector-no-qualifying-type` false negatives for `:is/where()` ([#&#8203;8940](stylelint/stylelint#8940)) ([@&#8203;romainmenke](https://github.com/romainmenke)).
- Fixed: `selector-type-no-unknown` false positives for MathML 4 tags ([#&#8203;8874](stylelint/stylelint#8874)) ([@&#8203;jeddy3](https://github.com/jeddy3)).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS42MS4wIiwidXBkYXRlZEluVmVyIjoiNDEuNjEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://git.robbevp.be/robbevp/website-robbevanpetegem/pulls/504
Co-authored-by: Renovate Bot <renovate@robbevp.be>
Co-committed-by: Renovate Bot <renovate@robbevp.be>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants