From b55bef2dd3670ccd4335c8c0e2d672ab8167f1c1 Mon Sep 17 00:00:00 2001 From: Yusuke Hirao Date: Mon, 19 Jan 2026 21:08:59 +0900 Subject: [PATCH 1/3] chore(deps): update dependency stylelint to v17 --- .../@d-zero/stylelint-config/package.json | 2 +- packages/@d-zero/stylelint-rules/package.json | 2 +- yarn.lock | 246 ++++++++++-------- 3 files changed, 145 insertions(+), 105 deletions(-) diff --git a/packages/@d-zero/stylelint-config/package.json b/packages/@d-zero/stylelint-config/package.json index 08431bea..f3f3bf8b 100644 --- a/packages/@d-zero/stylelint-config/package.json +++ b/packages/@d-zero/stylelint-config/package.json @@ -27,7 +27,7 @@ "dependencies": { "@d-zero/stylelint-rules": "5.0.0", "postcss-scss": "4.0.9", - "stylelint": "16.26.1", + "stylelint": "17.0.0", "stylelint-config-recess-order": "7.4.0", "stylelint-config-standard": "40.0.0", "stylelint-order": "7.0.1", diff --git a/packages/@d-zero/stylelint-rules/package.json b/packages/@d-zero/stylelint-rules/package.json index 49530eab..793ce340 100644 --- a/packages/@d-zero/stylelint-rules/package.json +++ b/packages/@d-zero/stylelint-rules/package.json @@ -26,7 +26,7 @@ "css-tree": "3.1.0", "postcss-selector-parser": "7.1.1", "postcss-value-parser": "4.2.0", - "stylelint": "16.26.1" + "stylelint": "17.0.0" }, "devDependencies": { "postcss": "8.5.6" diff --git a/yarn.lock b/yarn.lock index 9832c92b..6c8253a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -936,45 +936,54 @@ __metadata: languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^3.0.5": - version: 3.0.5 - resolution: "@csstools/css-parser-algorithms@npm:3.0.5" +"@csstools/css-parser-algorithms@npm:^4.0.0": + version: 4.0.0 + resolution: "@csstools/css-parser-algorithms@npm:4.0.0" peerDependencies: - "@csstools/css-tokenizer": ^3.0.4 - checksum: 10c0/d9a1c888bd43849ae3437ca39251d5c95d2c8fd6b5ccdb7c45491dfd2c1cbdc3075645e80901d120e4d2c1993db9a5b2d83793b779dbbabcfb132adb142eb7f7 + "@csstools/css-tokenizer": ^4.0.0 + checksum: 10c0/94558c2428d6ef0ddef542e86e0a8376aa1263a12a59770abb13ba50d7b83086822c75433f32aa2e7fef00555e1cc88292f9ca5bce79aed232bb3fed73b1528d languageName: node linkType: hard -"@csstools/css-syntax-patches-for-csstree@npm:^1.0.19": - version: 1.0.20 - resolution: "@csstools/css-syntax-patches-for-csstree@npm:1.0.20" - checksum: 10c0/335fcd24eb563068338153066d580bfdfc87b1e0f7650432a332e925c88d247a56f8e5851cd27dd68e49cde2dbeb465db60a51bb92a18e6721b5166b2e046d91 +"@csstools/css-syntax-patches-for-csstree@npm:^1.0.25": + version: 1.0.25 + resolution: "@csstools/css-syntax-patches-for-csstree@npm:1.0.25" + checksum: 10c0/a24229cc44cd64642ba76c73f59e7b0b00cfaffd992bf515d32f266aa68b983d9a945ebf8d45c90671d1e2c775a225d8b6257b01fdfeb6602c0c1f7e3faf77c0 languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^3.0.4": - version: 3.0.4 - resolution: "@csstools/css-tokenizer@npm:3.0.4" - checksum: 10c0/3b589f8e9942075a642213b389bab75a2d50d05d203727fcdac6827648a5572674caff07907eff3f9a2389d86a4ee47308fafe4f8588f4a77b7167c588d2559f +"@csstools/css-tokenizer@npm:^4.0.0": + version: 4.0.0 + resolution: "@csstools/css-tokenizer@npm:4.0.0" + checksum: 10c0/669cf3d0f9c8e1ffdf8c9955ad8beba0c8cfe03197fe29a4fcbd9ee6f7a18856cfa42c62670021a75183d9ab37f5d14a866e6a9df753a6c07f59e36797a9ea9f languageName: node linkType: hard -"@csstools/media-query-list-parser@npm:^4.0.3": - version: 4.0.3 - resolution: "@csstools/media-query-list-parser@npm:4.0.3" +"@csstools/media-query-list-parser@npm:^5.0.0": + version: 5.0.0 + resolution: "@csstools/media-query-list-parser@npm:5.0.0" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.5 - "@csstools/css-tokenizer": ^3.0.4 - checksum: 10c0/e29d856d57e9a036694662163179fc061a99579f05e7c3c35438b3e063790ae8a9ee9f1fb4b4693d8fc7672ae0801764fe83762ab7b9df2921fcc6172cfd5584 + "@csstools/css-parser-algorithms": ^4.0.0 + "@csstools/css-tokenizer": ^4.0.0 + checksum: 10c0/dbc22654769eca02c182f3a57be02cd5b8d0b958adc8397e66770b64b0e8fcd32faa93a3f6a99e1457bde11862485de3cd83a31dac7b03925d32f9891b31ccfd languageName: node linkType: hard -"@csstools/selector-specificity@npm:^5.0.0": - version: 5.0.0 - resolution: "@csstools/selector-specificity@npm:5.0.0" +"@csstools/selector-resolve-nested@npm:^4.0.0": + version: 4.0.0 + resolution: "@csstools/selector-resolve-nested@npm:4.0.0" + peerDependencies: + postcss-selector-parser: ^7.1.1 + checksum: 10c0/f6bccfe24a47c3e55710d421740550b868bbe7f0820f32d14d1eb737eefe7ec26261fb726cc5cfdf8236b3173d0a657ebdc9602e0c53824603f719b14a76bcaf + languageName: node + linkType: hard + +"@csstools/selector-specificity@npm:^6.0.0": + version: 6.0.0 + resolution: "@csstools/selector-specificity@npm:6.0.0" peerDependencies: - postcss-selector-parser: ^7.0.0 - checksum: 10c0/186b444cabcdcdeb553bfe021f80c58bfe9ef38dcc444f2b1f34a5aab9be063ab4e753022b2d5792049c041c28cfbb78e4b707ec398459300e402030d35c07eb + postcss-selector-parser: ^7.1.1 + checksum: 10c0/7a93973f9054f2e1f03c8543cde68e0b0c65e5e72da6e4e959974d28fe809e11bd2afa1ff2ca11a1690a4c9a2f2bbe00d00e2b07fb2108bf89c5e48fe441c432 languageName: node linkType: hard @@ -1073,7 +1082,7 @@ __metadata: dependencies: "@d-zero/stylelint-rules": "npm:5.0.0" postcss-scss: "npm:4.0.9" - stylelint: "npm:16.26.1" + stylelint: "npm:17.0.0" stylelint-config-recess-order: "npm:7.4.0" stylelint-config-standard: "npm:40.0.0" stylelint-order: "npm:7.0.1" @@ -1091,7 +1100,7 @@ __metadata: postcss: "npm:8.5.6" postcss-selector-parser: "npm:7.1.1" postcss-value-parser: "npm:4.2.0" - stylelint: "npm:16.26.1" + stylelint: "npm:17.0.0" languageName: unknown linkType: soft @@ -1118,13 +1127,6 @@ __metadata: languageName: node linkType: hard -"@dual-bundle/import-meta-resolve@npm:^4.2.1": - version: 4.2.1 - resolution: "@dual-bundle/import-meta-resolve@npm:4.2.1" - checksum: 10c0/8f1e572c14c4d20ea35734635085213abd13bd440c251309cf8ae5ed1082f6759cefa1c2c52a631f76859c57e26062f78a8cee4acc239c0edc87cd316a5d3b5b - languageName: node - linkType: hard - "@emnapi/core@npm:^1.1.0, @emnapi/core@npm:^1.4.3": version: 1.4.3 resolution: "@emnapi/core@npm:1.4.3" @@ -4461,10 +4463,10 @@ __metadata: languageName: node linkType: hard -"balanced-match@npm:^2.0.0": - version: 2.0.0 - resolution: "balanced-match@npm:2.0.0" - checksum: 10c0/60a54e0b75a61674e16a7a336b805f06c72d6f8fc457639c24efc512ba2bf9cb5744b9f6f5225afcefb99da39714440c83c737208cc65c5d9ecd1f3093331ca3 +"balanced-match@npm:^3.0.1": + version: 3.0.1 + resolution: "balanced-match@npm:3.0.1" + checksum: 10c0/ac8dd63a5b260610c2cbda982f436e964c1b9ae8764d368a523769da40a31710abd6e19f0fdf1773c4ad7b2ea7ba7b285d547375dc723f6e754369835afc8e9f languageName: node linkType: hard @@ -5957,15 +5959,6 @@ __metadata: languageName: node linkType: hard -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c - languageName: node - linkType: hard - "dom-accessibility-api@npm:0.7.0": version: 0.7.0 resolution: "dom-accessibility-api@npm:0.7.0" @@ -6832,7 +6825,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.3": +"fast-glob@npm:^3.3.3": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" dependencies: @@ -7676,20 +7669,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 - languageName: node - linkType: hard - "globby@npm:^14.1.0": version: 14.1.0 resolution: "globby@npm:14.1.0" @@ -7704,6 +7683,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^16.1.0": + version: 16.1.0 + resolution: "globby@npm:16.1.0" + dependencies: + "@sindresorhus/merge-streams": "npm:^4.0.0" + fast-glob: "npm:^3.3.3" + ignore: "npm:^7.0.5" + is-path-inside: "npm:^4.0.0" + slash: "npm:^5.1.0" + unicorn-magic: "npm:^0.4.0" + checksum: 10c0/45dd4dd8311401b37ed426ad7ea7a6e8fdda2518bb0d62fbf0a46c2e6b81bcbd2c8d4fbcbcf4c0600bba15c5a8f4621785d0177acbb1b545f02f6b49f2cdbe24 + languageName: node + linkType: hard + "globjoin@npm:^0.1.4": version: 0.1.4 resolution: "globjoin@npm:0.1.4" @@ -7764,6 +7757,13 @@ __metadata: languageName: node linkType: hard +"has-flag@npm:^5.0.1": + version: 5.0.1 + resolution: "has-flag@npm:5.0.1" + checksum: 10c0/6c214902e9d829979ef0f906980599df1db5ca289a9c72cc1b1ebc2c8c924681c60b632a21bfc23728a1098a3f300029a8608f293fcc559962ecd495652aa250 + languageName: node + linkType: hard + "has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": version: 1.0.2 resolution: "has-property-descriptors@npm:1.0.2" @@ -7963,10 +7963,10 @@ __metadata: languageName: node linkType: hard -"html-tags@npm:^3.3.1": - version: 3.3.1 - resolution: "html-tags@npm:3.3.1" - checksum: 10c0/680165e12baa51bad7397452d247dbcc5a5c29dac0e6754b1187eee3bf26f514bc1907a431dd2f7eb56207611ae595ee76a0acc8eaa0d931e72c791dd6463d79 +"html-tags@npm:^5.1.0": + version: 5.1.0 + resolution: "html-tags@npm:5.1.0" + checksum: 10c0/2dda19bc07e75837d0c52984558d92e8b82768050e4d6421b3164b1cb6ca5e73719209c2b23c0fa71faf097a7a3d18cf7f2021b488f1b1f270fca516c4c634c9 languageName: node linkType: hard @@ -8489,6 +8489,13 @@ __metadata: languageName: node linkType: hard +"is-path-inside@npm:^4.0.0": + version: 4.0.0 + resolution: "is-path-inside@npm:4.0.0" + checksum: 10c0/51188d7e2b1d907a9a5f7c18d99a90b60870b951ed87cf97595d9aaa429d4c010652c3350bcbf31182e7f4b0eab9a1860b43e16729b13cb1a44baaa6cdb64c46 + languageName: node + linkType: hard + "is-plain-obj@npm:^1.0.0, is-plain-obj@npm:^1.1.0": version: 1.1.0 resolution: "is-plain-obj@npm:1.1.0" @@ -9581,10 +9588,10 @@ __metadata: languageName: node linkType: hard -"mathml-tag-names@npm:^2.1.3": - version: 2.1.3 - resolution: "mathml-tag-names@npm:2.1.3" - checksum: 10c0/e2b094658a2618433efd2678a5a3e551645e09ba17c7c777783cd8dfa0178b0195fda0a5c46a6be5e778923662cf8dde891c894c869ff14fbb4ea3208c31bc4d +"mathml-tag-names@npm:^4.0.0": + version: 4.0.0 + resolution: "mathml-tag-names@npm:4.0.0" + checksum: 10c0/2e928554c61b5e502ee551a23bb4157b99ffd042578e28fb4038ee67d19ea2b1a79c34a3c2ab1611437f668f6b29436e1c8f6fdc20eaf3c88d511ce5b8954fe8 languageName: node linkType: hard @@ -9743,7 +9750,7 @@ __metadata: languageName: node linkType: hard -"meow@npm:13.2.0, meow@npm:^13.2.0": +"meow@npm:13.2.0": version: 13.2.0 resolution: "meow@npm:13.2.0" checksum: 10c0/d5b339ae314715bcd0b619dd2f8a266891928e21526b4800d49b4fba1cc3fff7e2c1ff5edd3344149fac841bc2306157f858e8c4d5eaee4d52ce52ad925664ce @@ -9757,6 +9764,13 @@ __metadata: languageName: node linkType: hard +"meow@npm:^14.0.0": + version: 14.0.0 + resolution: "meow@npm:14.0.0" + checksum: 10c0/dbe4e136e0f858472d8b8c24d382054fe9898f6f47c58a42be25e6b1985e5ae31048573bf399f6e5877bf9d5b89cb840beae7350682019f998ff30baaa5e4106 + languageName: node + linkType: hard + "meow@npm:^8.1.2": version: 8.1.2 resolution: "meow@npm:8.1.2" @@ -9790,7 +9804,7 @@ __metadata: languageName: node linkType: hard -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": +"merge2@npm:^1.3.0": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb @@ -11353,13 +11367,6 @@ __metadata: languageName: node linkType: hard -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c - languageName: node - linkType: hard - "path-type@npm:^6.0.0": version: 6.0.0 resolution: "path-type@npm:6.0.0" @@ -11501,7 +11508,7 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:7.1.0, postcss-selector-parser@npm:^7.0.0, postcss-selector-parser@npm:^7.1.0": +"postcss-selector-parser@npm:7.1.0, postcss-selector-parser@npm:^7.0.0": version: 7.1.0 resolution: "postcss-selector-parser@npm:7.1.0" dependencies: @@ -13024,7 +13031,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^8.0.0": +"string-width@npm:^8.0.0, string-width@npm:^8.1.0": version: 8.1.0 resolution: "string-width@npm:8.1.0" dependencies: @@ -13233,17 +13240,17 @@ __metadata: languageName: node linkType: hard -"stylelint@npm:16.26.1": - version: 16.26.1 - resolution: "stylelint@npm:16.26.1" - dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.5" - "@csstools/css-syntax-patches-for-csstree": "npm:^1.0.19" - "@csstools/css-tokenizer": "npm:^3.0.4" - "@csstools/media-query-list-parser": "npm:^4.0.3" - "@csstools/selector-specificity": "npm:^5.0.0" - "@dual-bundle/import-meta-resolve": "npm:^4.2.1" - balanced-match: "npm:^2.0.0" +"stylelint@npm:17.0.0": + version: 17.0.0 + resolution: "stylelint@npm:17.0.0" + dependencies: + "@csstools/css-parser-algorithms": "npm:^4.0.0" + "@csstools/css-syntax-patches-for-csstree": "npm:^1.0.25" + "@csstools/css-tokenizer": "npm:^4.0.0" + "@csstools/media-query-list-parser": "npm:^5.0.0" + "@csstools/selector-resolve-nested": "npm:^4.0.0" + "@csstools/selector-specificity": "npm:^6.0.0" + balanced-match: "npm:^3.0.1" colord: "npm:^2.9.3" cosmiconfig: "npm:^9.0.0" css-functions-list: "npm:^3.2.3" @@ -13253,32 +13260,38 @@ __metadata: fastest-levenshtein: "npm:^1.0.16" file-entry-cache: "npm:^11.1.1" global-modules: "npm:^2.0.0" - globby: "npm:^11.1.0" + globby: "npm:^16.1.0" globjoin: "npm:^0.1.4" - html-tags: "npm:^3.3.1" + html-tags: "npm:^5.1.0" ignore: "npm:^7.0.5" + import-meta-resolve: "npm:^4.2.0" imurmurhash: "npm:^0.1.4" is-plain-object: "npm:^5.0.0" known-css-properties: "npm:^0.37.0" - mathml-tag-names: "npm:^2.1.3" - meow: "npm:^13.2.0" + mathml-tag-names: "npm:^4.0.0" + meow: "npm:^14.0.0" micromatch: "npm:^4.0.8" normalize-path: "npm:^3.0.0" picocolors: "npm:^1.1.1" postcss: "npm:^8.5.6" - postcss-resolve-nested-selector: "npm:^0.1.6" postcss-safe-parser: "npm:^7.0.1" - postcss-selector-parser: "npm:^7.1.0" + postcss-selector-parser: "npm:^7.1.1" postcss-value-parser: "npm:^4.2.0" - resolve-from: "npm:^5.0.0" - string-width: "npm:^4.2.3" - supports-hyperlinks: "npm:^3.2.0" + string-width: "npm:^8.1.0" + supports-hyperlinks: "npm:^4.4.0" svg-tags: "npm:^1.0.0" table: "npm:^6.9.0" - write-file-atomic: "npm:^5.0.1" + write-file-atomic: "npm:^7.0.0" bin: stylelint: bin/stylelint.mjs - checksum: 10c0/3805dfe868abdcc5a62e5726eebe5e950432cfadfc5b47c2f103ef4dede8ee1eb8a1247c9ceb01a1739c0aba68865d79899d33a707256365bb2004664524908b + checksum: 10c0/ad1ebabb17904c1bc0e386b078b9656c02942b60ae3663a00b2b23c60e9c6adffbd6787999ad4473cb558c0fc195c0d9e0de5a5e8f063752b61fe3a281fc4433 + languageName: node + linkType: hard + +"supports-color@npm:^10.2.2": + version: 10.2.2 + resolution: "supports-color@npm:10.2.2" + checksum: 10c0/fb28dd7e0cdf80afb3f2a41df5e068d60c8b4f97f7140de2eaed5b42e075d82a0e980b20a2c0efd2b6d73cfacb55555285d8cc719fa0472220715aefeaa1da7c languageName: node linkType: hard @@ -13310,6 +13323,16 @@ __metadata: languageName: node linkType: hard +"supports-hyperlinks@npm:^4.4.0": + version: 4.4.0 + resolution: "supports-hyperlinks@npm:4.4.0" + dependencies: + has-flag: "npm:^5.0.1" + supports-color: "npm:^10.2.2" + checksum: 10c0/1172347b736e52f012506e162d5782d5fe9c64e22d286bd6daffbd182ca5696cc341fb0f66a550e2b96b5cdf31fc5217b009c6b92150843585debc6d8f1697bd + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -14131,6 +14154,13 @@ __metadata: languageName: node linkType: hard +"unicorn-magic@npm:^0.4.0": + version: 0.4.0 + resolution: "unicorn-magic@npm:0.4.0" + checksum: 10c0/cd6eff90967a5528dfa2016bdb5b38b0cd64c8558f9ba04fb5c2c23f3a232a67dfe2bfa4c45af3685d5f1a40dbac6a36d48e053f80f97ae4da1e0f6a55431685 + languageName: node + linkType: hard + "unified@npm:^10.0.0, unified@npm:^10.1.2": version: 10.1.2 resolution: "unified@npm:10.1.2" @@ -14776,7 +14806,7 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:5.0.1, write-file-atomic@npm:^5.0.1": +"write-file-atomic@npm:5.0.1": version: 5.0.1 resolution: "write-file-atomic@npm:5.0.1" dependencies: @@ -14818,6 +14848,16 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^7.0.0": + version: 7.0.0 + resolution: "write-file-atomic@npm:7.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^4.0.1" + checksum: 10c0/f5dd7c0324ae03b399974484fbe56363654c3884920e3c4f4d59b690596f113f60f4061a3c0aa5e6f4c22e5b9e7e0608954fd8131a916c9123b68a17ba886345 + languageName: node + linkType: hard + "write-json-file@npm:^3.2.0": version: 3.2.0 resolution: "write-json-file@npm:3.2.0" From 9d12f6fc67604a73d9e333bbbb784553996f558b Mon Sep 17 00:00:00 2001 From: Yusuke Hirao Date: Mon, 19 Jan 2026 21:11:06 +0900 Subject: [PATCH 2/3] fix(stylelint-rules): remove unnecessary props --- .../src/rules/declaration-value-type-disallowed-list/index.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.ts b/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.ts index 143875de..4af57cb2 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.ts @@ -87,16 +87,12 @@ export default createRule>({ if (matched) { const word = matched.substring; - const index = raw.indexOf(word); - const endIndex = index + word.length; stylelint.utils.report({ result, ruleName, message: messages.rejected(word, node.valueType), node: decl, - index, - endIndex, word, }); } From 6cdcc87b080a9be55520b06cd3d72e01f798977d Mon Sep 17 00:00:00 2001 From: Yusuke Hirao Date: Mon, 19 Jan 2026 21:13:02 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat(stylelint):=20stylelint=20v17=E3=82=A2?= =?UTF-8?q?=E3=83=83=E3=83=97=E3=83=87=E3=83=BC=E3=83=88=E3=81=AB=E4=BC=B4?= =?UTF-8?q?=E3=81=86SASS=E6=A7=8B=E6=96=87=E3=81=AE`&`=E9=80=A3=E7=B5=90?= =?UTF-8?q?=E3=81=AE=E7=A6=81=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/@d-zero/stylelint-config/name.js | 5 +++- test/cli.spec.mjs | 5 ++-- test/fixtures/stylelint/class-name.scss | 29 ++++++++++++++++++++--- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/packages/@d-zero/stylelint-config/name.js b/packages/@d-zero/stylelint-config/name.js index d9114756..2423cc99 100644 --- a/packages/@d-zero/stylelint-config/name.js +++ b/packages/@d-zero/stylelint-config/name.js @@ -22,13 +22,16 @@ module.exports = { }, ], 'selector-nested-pattern': [ - '^[^.]+.*', + '^[^.&]+.*|^&(?:\\s|\\.|\\[|:|#)', { /** * @param {string} selector * @returns {string} */ message: (selector) => { + if (selector.startsWith('&')) { + return `Stylelint v17以降「&」を使ったセレクタの文字列結合に対応しなくなったため、「&」の使用を禁止します: ${selector}`; + } return `コンポーネントのスタイル定義の中で別のコンポーネントを定義してはいけません: ${selector}`; }, }, diff --git a/test/cli.spec.mjs b/test/cli.spec.mjs index 522e4837..272bc7de 100644 --- a/test/cli.spec.mjs +++ b/test/cli.spec.mjs @@ -243,8 +243,9 @@ describe('stylelint', () => { expect(violations).toStrictEqual([ 'test/fixtures/stylelint/class-name.scss:1:1 クラス名は「c-」から始めてください: .component (selector-class-pattern)', - 'test/fixtures/stylelint/class-name.scss:10:2 「__」はコンポーネント名とエレメント名の区切りを表します。エレメント名の文字区切りは「-」を使います: .c-component__invalid__element-name (selector-class-pattern)', - 'test/fixtures/stylelint/class-name.scss:14:2 クラス名に命名規則にない文字が含まれています: .c-component__foo😁bar (selector-class-pattern)', + 'test/fixtures/stylelint/class-name.scss:6:2 Stylelint v17以降「&」を使ったセレクタの文字列結合に対応しなくなったため、「&」の使用を禁止します: &__element (selector-nested-pattern)', + 'test/fixtures/stylelint/class-name.scss:10:2 Stylelint v17以降「&」を使ったセレクタの文字列結合に対応しなくなったため、「&」の使用を禁止します: &__invalid__element-name (selector-nested-pattern)', + 'test/fixtures/stylelint/class-name.scss:14:2 Stylelint v17以降「&」を使ったセレクタの文字列結合に対応しなくなったため、「&」の使用を禁止します: &__foo😁bar (selector-nested-pattern)', 'test/fixtures/stylelint/class-name.scss:18:2 コンポーネントのスタイル定義の中で別のコンポーネントを定義してはいけません: .c-component2 (selector-nested-pattern)', 'test/fixtures/stylelint/class-name.scss:23:1 スタイル定義でIDセレクタは使わないでください (selector-max-id)', ]); diff --git a/test/fixtures/stylelint/class-name.scss b/test/fixtures/stylelint/class-name.scss index 0b15e6df..ca770cd0 100644 --- a/test/fixtures/stylelint/class-name.scss +++ b/test/fixtures/stylelint/class-name.scss @@ -4,15 +4,15 @@ .c-component { &__element { - // + // Stylelint v17以降「&」を使ったセレクタの文字列結合に対応しなくなったため、「&」の使用を禁止します } &__invalid__element-name { - // 「__」はコンポーネント名とエレメント名の区切りを表します。エレメント名の文字区切りは「-」を使います + // Stylelint v17以降「&」を使ったセレクタの文字列結合に対応しなくなったため、「&」の使用を禁止します } &__foo😁bar { - // クラス名に命名規則にない文字が含まれています + // Stylelint v17以降「&」を使ったセレクタの文字列結合に対応しなくなったため、「&」の使用を禁止します } .c-component2 { @@ -23,3 +23,26 @@ #id { // スタイル定義でIDセレクタは使わないでください } + +// stylelint-disable selector-type-no-unknown, selector-class-pattern, selector-max-id + +.c-component3 { + & type, + &[attr], + &.class, + &:hover, + &::before, + &#id { + // 連結ではない + } + + type & { + // 連結ではない + } + + & &__element { + // 小賢しいけど、検出困難のため、禁止化を諦める + } +} + +// stylelint-enable selector-type-no-unknown, selector-class-pattern, selector-max-id