Add ignoreSelectors: [] to no-duplicate-selectors#8883
Conversation
🦋 Changeset detectedLatest commit: 9818427 The changes in this PR will be included in the next version bump. 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 |
ybiquitous
left a comment
There was a problem hiding this comment.
@kovsu Thanks for the pull request. Can you check my reviews?
Using const flattenedNestedSelectors = flattenNestedSelectorsForRule(ruleNode, result)
.flatMap(({ resolvedSelectors }) => resolvedSelectors.nodes)
.filter((selector) => !optionsMatches(secondaryOptions, 'ignoreSelectors', selector.toString()));a, b {}
/* -> `flattenedNestedSelectors`: [b] */
b, a {}
/* -> `flattenedNestedSelectors`: [b] */
This would incorrectly report a duplication error for Expected behavior: When a rule contains any ignored selector, the entire rule should be skipped from duplicate checking. This is why I use |
|
Understood. Sorry for my wrong suggestions. 🙏🏼 |
ignoreSelectors option to no-duplicate-selectorsignoreSelectors: [] to no-duplicate-selectors
|
@jeddy3 Can you take a look when you have time? 🙏🏼 |
jeddy3
left a comment
There was a problem hiding this comment.
@kovsu Thank you for your second contribution!
It looks great.
I've requested some minor changes to follow our conventions for tests and docs. We've many of them, so we try to keep them consistent.
Some of the code in our older rules, like this one, is a bit behind our latest conventions, but we follow them for any new code we add.
| 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)).
| 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)).
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 ([#​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)). </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>
Closes #8696
No