# Rule Overview # https://github.com/stylelint/stylelint/blob/master/docs/user-guide/rules.md # # Based on Stylelint Config Standard (https://github.com/stylelint/stylelint-config-standard) # Tweaked for PostCSS usage + CSS Modules support + Lost Grid rules: # Basics indentation: 2 max-empty-lines: 4 max-line-length: 140 max-nesting-depth: 3 no-descending-specificity: true no-duplicate-selectors: true no-eol-whitespace: true no-extra-semicolons: true no-indistinguishable-colors: - true - severity: warning no-invalid-double-slash-comments: true no-missing-end-of-source-newline: true no-unknown-animations: true # Comments comment-empty-line-before: - always - except: [ first-nested ] ignore: [ stylelint-commands ] comment-no-empty: true comment-whitespace-inside: - always - severity: warning # At-Rules at-rule-empty-line-before: - always - except: [ blockless-group, first-nested ] ignore: [ after-comment ] ignoreAtRules: [ else ] at-rule-name-space-after: always-single-line at-rule-no-unknown: - true - ignoreAtRules: [ if, else, import, include, mixin, content, lost, value ] at-rule-no-vendor-prefix: true at-rule-semicolon-newline-after: always at-rule-name-case: lower # Rules: rule-nested-empty-line-before: - always-multi-line - except: [first-nested] ignore: [after-comment] rule-non-nested-empty-line-before: - always-multi-line - ignore: [after-comment] # Color color-hex-case: lower color-hex-length: short color-named: never color-no-hex: null color-no-invalid-hex: true # Font font-family-name-quotes: always-where-required font-weight-notation: numeric # Function function-calc-no-unspaced-operator: true function-comma-newline-after: always-multi-line function-comma-space-after: always-single-line function-comma-space-before: never function-linear-gradient-no-nonstandard-direction: true function-max-empty-lines: 0 function-name-case: lower function-parentheses-newline-inside: always-multi-line function-parentheses-space-inside: never-single-line function-url-data-uris: never function-url-quotes: always function-whitespace-after: always # Number number-leading-zero: always number-max-precision: 3 number-no-trailing-zeros: true # String string-no-newline: true string-quotes: double # Length length-zero-no-unit: true # Unit unit-case: lower unit-no-unknown: true # Value value-keyword-case: lower value-no-vendor-prefix: true # Value List value-list-comma-newline-after: always-multi-line value-list-comma-space-after: always-single-line value-list-comma-space-before: never value-list-max-empty-lines: 0 # Custom Property custom-property-no-outside-root: true custom-property-empty-line-before: - always - except: [ after-custom-property, first-nested ] ignore: [ after-comment, inside-single-line-block ] # Property property-case: lower property-no-vendor-prefix: true # Keyframe keyframe-declaration-no-important: true # Declaration declaration-bang-space-after: never declaration-bang-space-before: always declaration-block-no-duplicate-properties: - true - ignore: [ "consecutive-duplicates-with-different-values" ] declaration-block-no-ignored-properties: true declaration-block-no-redundant-longhand-properties: null declaration-block-no-shorthand-property-overrides: true declaration-block-semicolon-newline-after: always-multi-line declaration-block-semicolon-space-after: always-single-line declaration-block-semicolon-space-before: never declaration-block-single-line-max-declarations: 1 declaration-block-trailing-semicolon: always declaration-colon-newline-after: always-multi-line declaration-colon-space-after: always-single-line declaration-colon-space-before: never declaration-empty-line-before: null declaration-no-important: true declaration-property-unit-blacklist: "/^animation/": ["s"] "/^transition/": ["s"] "line-height": ["px", "em", "rem"] declaration-block-properties-order: # Inspired by https://css-tricks.com/poll-results-how-do-you-order-your-css-properties/ - # Preprocessor - properties: [ "@include", composes ] order: "flexible" # Content, Positioning & Layout - properties: [ content, src, position, z-index, top, right, bottom, left, display, float, flex, justify-content, align-items, overflow, box-sizing, min-width, width, max-width, min-height, height, max-height, padding, padding-top, padding-right, padding-bottom, padding-left, margin, margin-top, margin-right, margin-bottom, margin-left ] order: "flexible" # Appearance & Animation - properties: [ background, box-shadow, border, outline, color, text-shadow, cursor, font, font-family, font-size, font-weight, font-style, line-height, text-align, opacity, animation, transform, transition, will-change, list-style ] order: "flexible" - unspecified: bottom # Shorthand shorthand-property-no-redundant-values: true # Block block-closing-brace-empty-line-before: never block-closing-brace-newline-after: - always - ignoreAtRules: [if, else] block-closing-brace-newline-before: always-multi-line block-closing-brace-space-before: always-single-line block-no-empty: true block-no-single-line: true block-opening-brace-newline-after: always-multi-line block-opening-brace-space-after: always-single-line block-opening-brace-space-before: always # Selector selector-attribute-brackets-space-inside: never selector-attribute-operator-space-after: never selector-attribute-operator-space-before: never selector-combinator-space-after: always selector-combinator-space-before: always selector-attribute-quotes: always selector-descendant-combinator-no-non-space: true selector-no-vendor-prefix: true selector-no-universal: true selector-list-comma-newline-after: always selector-list-comma-space-before: never selector-max-empty-lines: 0 selector-pseudo-class-case: lower selector-pseudo-class-parentheses-space-inside: never selector-pseudo-element-case: lower selector-pseudo-element-colon-notation: double selector-pseudo-element-no-unknown: true selector-type-case: lower selector-type-no-unknown: true # CSS Module Support selector-pseudo-class-no-unknown: - true - ignorePseudoClasses: [ export, import, global, local ] selector-no-type: - true - ignore: descendant selector-class-pattern: - "^[a-z][a-zA-Z0-9]+$" - resolveNestedSelectors: true selector-no-id: true selector-no-empty: true property-no-unknown: - true - ignoreProperties: ["composes", "/^lost-/"] # Browser Support no-unsupported-browser-features: - true - severity: warning # Media Queries media-feature-colon-space-after: always media-feature-colon-space-before: never media-feature-name-case: lower media-feature-name-no-unknown: true media-feature-no-missing-punctuation: true media-feature-parentheses-space-inside: never media-feature-range-operator-space-after: always media-feature-range-operator-space-before: always media-query-list-comma-newline-after: always-multi-line media-query-list-comma-space-after: always-single-line media-query-list-comma-space-before: never