Skip to content

Commit 79e14c4

Browse files
authored
chore(config): add stylelint for CSS code quality (#4524)
- Add stylelint with stylelint-config-standard and stylelint-config-clean-order - Configure custom rules for CSS custom properties (kebab-case/camelCase with pseudo-private support) - Enforce BEM class naming with eds- prefix - Add comment spacing rules - Configure vendor prefix exceptions for column properties - Add lint:css script targeting /next components - Include stylelint VS Code extension in workspace recommendations
1 parent e8312bb commit 79e14c4

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

.stylelintrc.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
extends:
2+
- 'stylelint-config-standard'
3+
- 'stylelint-config-clean-order'
4+
rules:
5+
custom-property-pattern:
6+
- '^_?([a-z][a-zA-Z0-9]*)(-[a-zA-Z0-9]+)*$'
7+
- message: "Expected '%s' to be kebab-case or camelCase, optionally prefixed with _ for pseudo-private properties (custom-property-pattern)"
8+
property-no-vendor-prefix:
9+
- true
10+
- ignoreProperties: ['/^(column[s-]?)([a-z]*)$/']
11+
comment-empty-line-before:
12+
- always
13+
- except: [first-nested]
14+
ignore: [after-comment, stylelint-commands]
15+
selector-class-pattern:
16+
- '^eds-[a-z][a-z0-9]*(-[a-z0-9]+)*(__[a-z][a-z0-9]*(-[a-z0-9]+)*)?(--[a-z][a-z0-9]*(-[a-z0-9]+)*)?$'
17+
- message: "Expected class '%s' to follow BEM syntax: eds-block__element--modifier (selector-class-pattern)"

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"lint:data-grid-react": "pnpm run lint ./packages/eds-data-grid-react",
1010
"lint:lab": "pnpm run lint ./packages/eds-lab-react",
1111
"lint:utils": "pnpm run lint ./packages/eds-utils",
12+
"lint:css": "stylelint ./packages/eds-core-react/src/components/next/**/*.css",
1213
"init": "pnpm install --force && pnpm run build",
1314
"extract-prerequisites": "node scripts/extract-prerequisites.js",
1415
"prebuild": "pnpm run extract-prerequisites",
@@ -88,6 +89,10 @@
8889
"eslint-plugin-react-hooks": "^5.2.0",
8990
"eslint-plugin-testing-library": "^7.15.4",
9091
"jest-axe": "^10.0.0",
92+
"stylelint": "^17.3.0",
93+
"stylelint-config-clean-order": "^8.0.1",
94+
"stylelint-config-standard": "^40.0.0",
95+
"stylelint-order": "^7.0.1",
9196
"prettier": "3.8.1",
9297
"typescript": "^5.9.3"
9398
},

0 commit comments

Comments
 (0)