Skip to content

Commit b2d2da4

Browse files
aaronccasanovajesstelfordkyledurand
authored
Upgrade stylelint-polaris to stylelint v16 (#12337)
### WHAT is this pull request doing? This PR upgrades `stylelint-polaris` to `stylelint` v16 and drops support for v15 and v16. As part of this upgrade, the following updates were made: - Upgraded dependencies - `stylelint` to `^16.6.1` - `stylelint-scss` to `^6.3.2` - `@shopify/eslint-plugin` to `^45.0.0` - `@shopify/stylelint-plugin` to `^14.0.0` - `eslint` to `^8.56.0` - `jest-preset-stylelint` to `^7.0.1` - `prettier` to `^3.2.2` - Patched `stylelint` to report errors on async rules. See Stylelint issue for more details: stylelint/stylelint#7820 - Added `--experimental-vm-modules` flag to `jest` calls to enable support for async plugins - Updated relevant `stylelint-polaris` plugins and `stylelint` APIs to be asynchronous - Updated `prettier.format` calls to be asynchronous - Resolved `eslint` and `stylelint` failures after dependency upgrades - Temporarily removed the `styles-insert-stylelint-disable` migration as `result.messages` `node`s are now detached from the `root` AST. Calls such as `node.prev()` and `node.before(comment)` now throw exceptions as the reported nodes don't have access to properties and methods previously exposed. The consensus speaking with @kyledurand and @sophschneider is that we can revisit adding support for this migration if and when it is needed again. ### How to 🎩 🖥 [Local development instructions](https://github.com/Shopify/polaris/blob/main/README.md#install-dependencies-and-build-workspaces) 🗒 [General tophatting guidelines](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting.md) 📄 [Changelog guidelines](https://github.com/Shopify/polaris/blob/main/.github/CONTRIBUTING.md#changelog) ### 🎩 checklist - [ ] Tested a [snapshot](https://github.com/Shopify/polaris/blob/main/documentation/Releasing.md#-snapshot-releases) - [ ] Tested on [mobile](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting.md#cross-browser-testing) - [ ] Tested on [multiple browsers](https://help.shopify.com/en/manual/shopify-admin/supported-browsers) - [ ] Tested for [accessibility](https://github.com/Shopify/polaris/blob/main/documentation/Accessibility%20testing.md) - [ ] Updated the component's `README.md` with documentation changes - [ ] [Tophatted documentation](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting%20documentation.md) changes in the style guide --------- Co-authored-by: Jess Telford <[email protected]> Co-authored-by: Kyle Durand <[email protected]>
1 parent dfe620f commit b2d2da4

File tree

81 files changed

+1879
-1123
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+1879
-1123
lines changed

.changeset/little-impalas-knock.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/stylelint-polaris': major
3+
---
4+
5+
Dropped support for `stylelint` v14 and v15

.changeset/tricky-mayflies-push.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/polaris-migrator': major
3+
---
4+
5+
Removed `styles-insert-stylelint-disable` migration

.eslintrc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ module.exports = {
6969
'@typescript-eslint/consistent-type-imports': 'error',
7070
'@typescript-eslint/consistent-type-exports': 'error',
7171
'@typescript-eslint/naming-convention': 'off',
72+
'@typescript-eslint/consistent-indexed-object-style': 'off',
7273
'jsx-a11y/label-has-for': [
7374
2,
7475
{
@@ -86,6 +87,8 @@ module.exports = {
8687
'jsx-a11y/click-events-have-key-events': 'off',
8788
'jsx-a11y/no-noninteractive-element-interactions': 'off',
8889
'jsx-a11y/no-noninteractive-element-to-interactive-role': 'off',
90+
'jest/no-conditional-in-test': 'off',
91+
'jest/no-standalone-expect': 'off',
8992
'no-restricted-imports': [
9093
'error',
9194
{

.prettierignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
.next
2+
pnpm-lock.yaml
3+
**/CHANGELOG.md
4+
/polaris-migrator/src/migrations/**/tests/*.scss
5+
/polaris-migrator/templates/**/*.hbs
26
dist
37
node_modules
48
/polaris-react/build

.stylelintrc.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ module.exports = {
99
'value-keyword-case': ['lower', {camelCaseSvgKeywords: true}],
1010
'at-rule-no-unknown': null,
1111
'scss/at-rule-no-unknown': true,
12+
'selector-max-class': 5,
13+
'selector-max-combinators': 5,
14+
'selector-max-compound-selectors': 5,
15+
'selector-max-specificity': '0,5,0',
16+
// Disabling this rule as it's not forward-compatible with new CSS rules
17+
// that get added. See: https://github.com/stylelint/stylelint/issues/7630
18+
'declaration-block-no-redundant-longhand-properties': null,
1219
},
1320
overrides: [
1421
{

package.json

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,32 +40,37 @@
4040
"@rollup/plugin-replace": "^5.0.2",
4141
"@rollup/plugin-virtual": "^3.0.1",
4242
"@rollup/pluginutils": "^5.0.2",
43-
"@shopify/eslint-plugin": "^42.0.1",
44-
"@shopify/stylelint-plugin": "^11.0.0",
43+
"@shopify/eslint-plugin": "^45.0.0",
44+
"@shopify/stylelint-plugin": "^14.0.0",
4545
"@shopify/typescript-configs": "^5.1.0",
4646
"@size-limit/preset-small-lib": "^5.0.3",
4747
"@types/jest": "^29.5.12",
4848
"@types/node": "^20.10.0",
4949
"babel-loader": "^9.1.2",
50-
"eslint": "^8.3.0",
50+
"eslint": "^8.56.0",
5151
"eslint-plugin-storybook": "^0.8.0",
5252
"execa": "^5.0.0",
5353
"jest": "^29.7.0",
5454
"jest-environment-jsdom": "^29.7.0",
55-
"jest-preset-stylelint": "^5.0.3",
55+
"jest-preset-stylelint": "^7.0.1",
5656
"jest-watch-typeahead": "^2.2.2",
5757
"js-yaml": "^4.1.0",
5858
"npm-run-all": "^4.1.5",
5959
"postinstall-postinstall": "^2.1.0",
60-
"prettier": "^2.5.0",
60+
"prettier": "^3.3.2",
6161
"rollup": "^3.12.0",
6262
"rollup-plugin-node-externals": "^5.1.0",
6363
"size-limit": "^5.0.3",
64-
"stylelint": "^14.15.0",
64+
"stylelint": "^16.6.1",
6565
"ts-node": "^10.7.0",
6666
"turbo": "^1.11.1",
6767
"typescript": "^4.9.3"
6868
},
69+
"pnpm": {
70+
"patchedDependencies": {
71+
72+
}
73+
},
6974
"size-limit": [
7075
{
7176
"name": "polaris-react-cjs",

patches/[email protected]

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
diff --git a/lib/utils/checkAgainstRule.cjs b/lib/utils/checkAgainstRule.cjs
2+
index 862f0c77f2ec60a26ac670230c531be88cead26f..e2c40a2009941ccd9e6c4a8f49f654c8e6ae1ef3 100644
3+
--- a/lib/utils/checkAgainstRule.cjs
4+
+++ b/lib/utils/checkAgainstRule.cjs
5+
@@ -45,7 +45,7 @@ async function checkAgainstRule(options, callback) {
6+
const [primary, secondary] = settings;
7+
const ruleFunc = rule(primary, secondary || {}, context);
8+
9+
- ruleFunc(
10+
+ await ruleFunc(
11+
root,
12+
13+
// NOTE: This temporary PostCSS result doesn't have a property for Stylelint use.
14+
diff --git a/lib/utils/checkAgainstRule.mjs b/lib/utils/checkAgainstRule.mjs
15+
index c82c6c82734ba7a41f59a57aa7a89f149378599f..168270665e953635e3cb223fe5ebdbbbaf69ff54 100644
16+
--- a/lib/utils/checkAgainstRule.mjs
17+
+++ b/lib/utils/checkAgainstRule.mjs
18+
@@ -42,7 +42,7 @@ export default async function checkAgainstRule(options, callback) {
19+
const [primary, secondary] = settings;
20+
const ruleFunc = rule(primary, secondary || {}, context);
21+
22+
- ruleFunc(
23+
+ await ruleFunc(
24+
root,
25+
26+
// NOTE: This temporary PostCSS result doesn't have a property for Stylelint use.

0 commit comments

Comments
 (0)