UNPKG

@kununu/stylelint-config

Version:
98 lines (74 loc) 3.04 kB
# @kununu/stylelint-config > kununu style linter configuration Shared [stylelint](https://stylelint.io/) configuration for kununu's SCSS, used across the frontend apps and `@kununu/ui`. It builds on [`stylelint-config-standard-scss`](https://github.com/stylelint-scss/stylelint-config-standard-scss) and enforces kununu's conventions plus Prettier formatting. `stylelint` itself is bundled as a dependency, so you don't need to install it separately. The package pins Node `24.13.1` / npm `11.8.0` in `engines`. ## 📦 Installation Add the package as a dev dependency: ```console npm install @kununu/stylelint-config --save-dev ``` ## 💻 Usage Create a `.stylelintrc` (or `.stylelintrc.json`) file: ```json { "extends": "@kununu/stylelint-config" } ``` Add a lint script targeting your SCSS files to `package.json`: ```json { "scripts": { "lint": "stylelint '**/*.scss'" } } ``` See the [stylelint docs](https://stylelint.io/user-guide/configuration) for more detailed configuration options. ## 🎨 What's included The config extends `stylelint-config-standard-scss` and `stylelint-prettier/recommended`, then layers on kununu's conventions. The notable rules: - **Class selectors** must be **camelCase** (`selector-class-pattern`). - **SCSS mixin names** must be **kebab-case** (`scss/at-mixin-pattern`). - **Colors:** named colors are forbidden (`color-named`), hex must be long form (`#ffffff`, not `#fff`), and legacy color/alpha notation is used (`rgba(0, 0, 0, 0.5)`). - **No duplicate selectors**, and ID selectors are flagged as a **warning** (not an error). - CSS Modules pseudo-selectors (`:export`, `:global`, `:local`, `:import`) are allowed. - **Property and selector ordering** is enforced via [`stylelint-semantic-groups`](https://www.npmjs.com/package/stylelint-semantic-groups). ### Formatting (Prettier) Formatting is handled by [Prettier](https://prettier.io/) through `stylelint-prettier` and reported as lint errors (auto-fixable with `stylelint --fix`). The relevant options are pinned here: | Option | Value | | --- | --- | | `printWidth` | `80` | | `tabWidth` | `2` | | `useTabs` | `false` | | `singleQuote` | `true` | | `trailingComma` | `'all'` | > **Note:** these Prettier options are enforced by this config and > **intentionally override any `.prettierrc` in the consuming project** for SCSS > files. This keeps SCSS formatting consistent across all repos regardless of > each project's JS/TS Prettier setup. ## ⚡️ Editor integration Linting runs in CI (and pre-commit, where configured), but catching errors in your editor is faster. We recommend the [stylelint VS Code extension](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint). Installing the extension alone often isn't enough to lint SCSS — add this to your `.vscode/settings.json` so it validates SCSS and stylelint owns formatting instead of the built-in linters: ```json { "stylelint.validate": ["css", "scss"], "css.validate": false, "scss.validate": false } ```