@alexlit/lint-kit
Version:
Preset of configuration files and dependencies for linting web applications (designed for Vue.js with TypeScript)
98 lines (95 loc) • 3.05 kB
JavaScript
/* eslint-disable unicorn/no-null */
const KEBAB_CASE_PATTERN = '^[a-z]+([a-z0-9-]+[a-z0-9]+)?$';
/** @see [stylelint-scss](https://github.com/kristerkari/stylelint-scss) */
export default {
extends: ['stylelint-config-standard-scss'],
plugins: ['stylelint-scss'],
rules: {
'scss/at-each-key-value-single-line': true,
'scss/at-else-if-parentheses-space-before': 'always',
'scss/at-extend-no-missing-placeholder': true,
'scss/at-function-pattern': KEBAB_CASE_PATTERN,
'scss/at-if-no-null': true,
'scss/at-mixin-argumentless-call-parentheses': 'always',
'scss/at-mixin-named-arguments': 'always',
'scss/at-mixin-parentheses-space-before': 'never',
'scss/at-mixin-pattern': KEBAB_CASE_PATTERN,
'scss/at-rule-conditional-no-parentheses': true,
'scss/at-rule-no-unknown': [
true,
{
ignoreAtRules: [
'container',
// tailwind
'apply',
'config',
'custom-variant',
'layer',
'reference',
'responsive',
'screen',
'source',
'tailwind',
'theme',
'utility',
'variant',
// /tailwind
],
},
],
'scss/at-use-no-unnamespaced': true,
'scss/comment-no-empty': true,
'scss/comment-no-loud': null,
'scss/declaration-nested-properties': 'never',
'scss/declaration-nested-properties-no-divided-groups': true,
'scss/dimension-no-non-numeric-values': true,
'scss/dollar-variable-default': [true, { ignore: 'local' }],
'scss/dollar-variable-empty-line-before': [
'always',
{
except: ['first-nested', 'after-comment', 'after-dollar-variable'],
},
],
'scss/dollar-variable-first-in-block': [
true,
{
except: [],
ignore: ['comments', 'imports'],
},
],
'scss/dollar-variable-no-missing-interpolation': true,
'scss/dollar-variable-no-namespaced-assignment': true,
'scss/dollar-variable-pattern': KEBAB_CASE_PATTERN,
'scss/double-slash-comment-whitespace-inside': 'always',
'scss/function-color-relative': true,
'scss/function-no-unknown': [
true,
{
ignoreFunctions: [
'format',
'url',
// vue
'v-bind',
// tailwind
'theme',
],
},
],
'scss/function-quote-no-quoted-strings-inside': true,
'scss/function-unquote-no-unquoted-strings-inside': true,
'scss/load-no-partial-leading-underscore': true,
'scss/load-partial-extension': 'always',
'scss/map-keys-quotes': 'always',
'scss/no-duplicate-dollar-variables': true,
'scss/no-duplicate-mixins': true,
'scss/no-global-function-names': null,
'scss/operator-no-newline-after': null,
'scss/operator-no-unspaced': true,
'scss/percent-placeholder-pattern': KEBAB_CASE_PATTERN,
'scss/selector-nest-combinators': 'always',
'scss/selector-no-redundant-nesting-selector': [
true,
{ ignoreKeywords: [] },
],
},
};