94 lines
2.5 KiB
TypeScript
Executable File
94 lines
2.5 KiB
TypeScript
Executable File
import type { Config } from 'stylelint';
|
|
|
|
export const baseConfig: Config = {
|
|
// TODO: Extending with standard config requires a lot of manual fixes but would be great to have
|
|
// extends: 'stylelint-config-standard-scss',
|
|
// Basic SCSS support with essential rules
|
|
plugins: ['stylelint-scss'],
|
|
rules: {
|
|
'no-empty-source': true,
|
|
|
|
// Basic syntax and consistency rules
|
|
'color-hex-length': 'short',
|
|
'comment-no-empty': true,
|
|
// 'declaration-block-no-duplicate-properties': disabled due to vendor prefixes
|
|
'no-duplicate-selectors': true,
|
|
'no-invalid-double-slash-comments': true,
|
|
|
|
// Quality rules (keep only the working ones)
|
|
'length-zero-no-unit': true,
|
|
// 'no-descending-specificity': disabled - too many existing issues (would require major refactoring) but this would be a must have
|
|
'no-duplicate-at-import-rules': true,
|
|
'shorthand-property-no-redundant-values': true,
|
|
// 'declaration-block-no-shorthand-property-overrides': disabled - conflicts with intentional CSS patterns
|
|
'at-rule-no-unknown': [
|
|
true,
|
|
{
|
|
ignoreAtRules: [
|
|
'tailwind',
|
|
'apply',
|
|
'variants',
|
|
'responsive',
|
|
'screen',
|
|
'use',
|
|
'forward',
|
|
'include',
|
|
'mixin',
|
|
'function',
|
|
'return',
|
|
'if',
|
|
'else',
|
|
'for',
|
|
'each',
|
|
'while',
|
|
'extend',
|
|
'at-root',
|
|
'warn',
|
|
'error',
|
|
],
|
|
},
|
|
],
|
|
'at-rule-disallowed-list': [
|
|
['import'],
|
|
{
|
|
message:
|
|
'@import is deprecated! Use @use for local SCSS files. For third-party libraries that need scoping: use @use "sass:meta"; and @include meta.load-css("library") inside a CSS selector.',
|
|
},
|
|
],
|
|
|
|
// SCSS specific rules
|
|
'scss/dollar-variable-colon-space-after': 'always-single-line',
|
|
'scss/dollar-variable-colon-space-before': 'never',
|
|
'scss/dollar-variable-no-missing-interpolation': true,
|
|
'scss/double-slash-comment-whitespace-inside': 'always',
|
|
'scss/operator-no-unspaced': true,
|
|
'scss/property-no-unknown': [
|
|
true,
|
|
{
|
|
ignoreProperties: ['composes'],
|
|
},
|
|
],
|
|
'scss/at-import-partial-extension-disallowed-list': ['scss'],
|
|
// 'scss/selector-no-redundant-nesting-selector': disabled - would require manual fixes across many files
|
|
},
|
|
ignoreFiles: [
|
|
'**/node_modules/**/*',
|
|
'**/dist/**/*',
|
|
'**/build/**/*',
|
|
'**/.turbo/**/*',
|
|
'**/coverage/**/*',
|
|
],
|
|
overrides: [
|
|
{
|
|
files: ['**/*.vue'],
|
|
customSyntax: 'postcss-html',
|
|
},
|
|
{
|
|
files: ['**/*.scss', '**/*.sass'],
|
|
customSyntax: 'postcss-scss',
|
|
},
|
|
],
|
|
};
|
|
|
|
export default baseConfig;
|