Skip to content

Instantly share code, notes, and snippets.

@mauroreisvieira
Created April 4, 2018 09:03
Show Gist options
  • Save mauroreisvieira/30f353625d3ed3549d8e6ab69bba1e83 to your computer and use it in GitHub Desktop.
Save mauroreisvieira/30f353625d3ed3549d8e6ab69bba1e83 to your computer and use it in GitHub Desktop.
extends:
- stylelint-config-standard
- stylelint-config-recommended-scss
ignoreFiles:
- node_modules/**/*
plugins:
- stylelint-scss
- stylelint-order
rules:
# Follow best practices
font-family-name-quotes: always-where-recommended
# http://stackoverflow.com/questions/2168855/is-quoting-the-value-of-url-really-necessary
function-url-quotes: never
# https://www.w3.org/TR/selectors/#attribute-selectors
# http://stackoverflow.com/q/3851091
selector-attribute-quotes: always
# Double-quotes are our convention throughout our codebase within (S)CSS. They also reflect how
# attribute strings are normally quoted within the DOM.
string-quotes: double
# https://github.com/sasstools/sass-lint/blob/develop/lib/config/property-sort-orders/smacss.yml
order/properties-order:
- display
- position
- top
- right
- bottom
- left
- flex
- flex-basis
- flex-direction
- flex-flow
- flex-grow
- flex-shrink
- flex-wrap
- align-content
- align-items
- align-self
- justify-content
- order
- width
- min-width
- max-width
- height
- min-height
- max-height
- margin
- margin-top
- margin-right
- margin-bottom
- margin-left
- padding
- padding-top
- padding-right
- padding-bottom
- padding-left
- float
- clear
- columns
- column-gap
- column-fill
- column-rule
- column-span
- column-count
- column-width
- transform
- transform-box
- transform-origin
- transform-style
- transition
- transition-delay
- transition-duration
- transition-property
- transition-timing-function
# Border
- border
- border-top
- border-right
- border-bottom
- border-left
- border-width
- border-top-width
- border-right-width
- border-bottom-width
- border-left-width
- border-style
- border-top-style
- border-right-style
- border-bottom-style
- border-left-style
- border-radius
- border-top-left-radius
- border-top-right-radius
- border-bottom-left-radius
- border-bottom-right-radius
- border-color
- border-top-color
- border-right-color
- border-bottom-color
- border-left-color
- outline
- outline-color
- outline-offset
- outline-style
- outline-width
# Background
- background
- background-attachment
- background-clip
- background-color
- background-image
- background-repeat
- background-position
- background-size
# Text
- color
- font
- font-family
- font-size
- font-smoothing
- font-style
- font-variant
- font-weight
- letter-spacing
- line-height
- list-style
- text-align
- text-decoration
- text-indent
- text-overflow
- text-rendering
- text-shadow
- text-transform
- text-wrap
- white-space
- word-spacing
# Other
- border-collapse
- border-spacing
- box-shadow
- caption-side
- content
- cursor
- empty-cells
- opacity
- overflow
- quotes
- speak
- table-layout
- vertical-align
- visibility
- z-index
declaration-property-unit-whitelist:
font-size:
- "rem"
- "px"
- "%"
# The following prefix rules are enabled since we use autoprefixer
at-rule-no-vendor-prefix: true
media-feature-name-no-vendor-prefix: true
selector-no-vendor-prefix: true
value-no-vendor-prefix: true
# Usually if you're nesting past 3 levels deep there's a problem
max-nesting-depth:
- 4
- ignore: "blockless-at-rules"
# For specificity: disallow IDs (0). Allow for complex combinations of classes, pseudo-classes,
# attribute modifiers based on selector-max-compound-selectors, plus an addition for
# pseudo-classes (4). Allow for pseudo-elements (1).
selector-max-specificity: 0,4,1
# Disallow "@extend" in scss.
# http://csswizardry.com/2016/02/mixins-better-for-performance/
# http://vanseodesign.com/css/sass-mixin-or-extend/
# Besides performance, @extend actually *changes* the selector precedence by creating a compound
# selector, which can lead to ambiguous results.
at-rule-blacklist:
- extend
# Extremely useful for typos, and anything emergent can be ignored by this rule
property-no-unknown:
- true
- ignoreProperties:
- contain
# There is no reason that a specific ID would be needed for UI components
selector-max-id: 0
# Qualifying types are not needed when using a naming system like BEM
selector-no-qualifying-type: true
# In general, we should *never* be modifying elements within our components, since we can't
# predict the use cases in which users would add a certain type of element into a component.
# The only hard exception to this are `fieldset` elements, which can be disabled and in that case
# we want our UI components within that fieldset to be disabled as well.
# Other exceptions to this may be in packages/material-components-web, in which case this rule could
# be disabled for that file, with an explanation.
selector-max-type:
- 0
- ignoreTypes:
- fieldset
- html
- body
- p
- a
- ul
- ol
- pre
# Styles for components should never need the universal selector.
selector-max-universal: 1
# http://www.paulirish.com/2010/the-protocol-relative-url/
function-url-no-scheme-relative: true
# TODO: and FIXME: warnings are super useful because they remind us that we should address these
# within our codebase
comment-word-blacklist:
-
- /^TODO:/
- /^FIXME:/
- severity: warning
# Part of google's style guide
number-leading-zero: never
# Prevents unneeded nesting selectors
scss/selector-no-redundant-nesting-selector: true
# Since leading underscores are not needed, they can be omitted
scss/at-import-no-partial-leading-underscore: true
# Since mixins are explicit (`@include`) and parens are unnecessary for argumentless mixins, they
# can be omitted.
scss/at-mixin-argumentless-call-parentheses : never
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment