Replace sass-lint with stylelint

This commit is contained in:
Kevin MacMartin 2024-03-08 18:29:50 -05:00
parent dae1e1bbe4
commit b1952b8acb
4 changed files with 453 additions and 450 deletions

View file

@ -1,19 +0,0 @@
# Linter Configs
Configurations for linters used at WNY
## SCSS
* Linter: [sass-lint](https://github.com/sasstools/sass-lint)
* Config: `sass-lint.yml`
* Install: `~/.sass-lint.yml`
## Javascript
* Linter: [eslint](https://github.com/eslint/eslint)
* Modules:
* [@babel/eslint-parser](https://github.com/babel/babel-eslint)
* [eslint-plugin-vue@next](https://github.com/vuejs/eslint-plugin-vue)
* [eslint-plugin-json](https://github.com/azeemba/eslint-plugin-json)
* Config: `eslintrc`
* Install: `~/.eslintrc`

59
readme.md Normal file
View file

@ -0,0 +1,59 @@
# Linter Configs
Linters @ Williams New York
## SCSS
### Packages
* Linter:
* [stylelint](https://github.com/stylelint/stylelint)
* Modules:
* [stylelint-config-recommended-scss](https://github.com/stylelint-scss/stylelint-config-recommended-scss)
* [stylelint-order](https://github.com/hudochenkov/stylelint-order)
* [stylelint-stylistic](https://github.com/stylelint-stylistic/stylelint-stylistic)
#### Install
```
npm install -g stylelint stylelint-config-recommended-scss stylelint-order @stylistic/stylelint-plugin
```
### Config
Repo: `stylelintrc`
System: `~/.stylelintrc`
#### Install
```
ln -s "$(readlink -f stylelintrc)" ~/.stylelintrc
```
## Javascript
### Packages
* Linter:
* [eslint](https://github.com/eslint/eslint)
* Modules:
* [@babel/eslint-parser](https://github.com/babel/babel-eslint)
* [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue)
* [eslint-plugin-json](https://github.com/azeemba/eslint-plugin-json)
#### Install
```
npm install -g eslint @babel/eslint-parser eslint-plugin-vue eslint-plugin-json
```
### Config
Repo: `eslintrc`
System: `~/.eslintrc`
#### Install
```
ln -s "$(readlink -f eslintrc)" ~/.eslintrc
```

View file

@ -1,431 +0,0 @@
files:
include: '**/*.scss'
options:
formatter: stylish
merge-default-rules: false
rules:
attribute-quotes:
- 1
- include: true
bem-depth:
- 0
- max-depth: 1
border-zero:
- 1
- convention: zero
brace-style:
- 1
- style: 1tbs
- allow-single-line: true
class-name-format:
- 0
- allow-leading-underscore: false
- convention: hyphenatedlowercase
- ignore: []
clean-import-paths:
- 0
- filename-extension: false
leading-underscore: false
declarations-before-nesting: 1
empty-args:
- 1
- include: false
empty-line-between-blocks:
- 1
- include: true
- allow-single-line-rulesets: true
extends-before-declarations: 1
extends-before-mixins: 1
final-newline:
- 1
- include: true
force-attribute-nesting: 0
force-element-nesting: 0
force-pseudo-nesting: 0
function-name-format:
- 1
- allow-leading-underscore: false
convention: hyphenatedlowercase
hex-length:
- 1
- style: short
hex-notation:
- 1
- style: lowercase
id-name-format:
- 1
- allow-leading-underscore: false
- convention: hyphenatedlowercase
indentation:
- 1
- size: 4
leading-zero:
- 1
- include: true
max-file-line-count:
- 0
- length: 300
max-line-length:
- 0
- length: 80
mixin-name-format:
- 1
- allow-leading-underscore: false
convention: hyphenatedlowercase
mixins-before-declarations: 0
nesting-depth:
- 1
- max-depth: 10
no-attribute-selectors: 0
no-color-hex: 0
no-color-keywords: 1
no-color-literals: 0
no-combinators: 0
no-css-comments: 1
no-debug: 1
no-disallowed-properties:
- 0
- properties: []
no-duplicate-properties:
- 1
- exclude:
- src
no-empty-rulesets: 1
no-extends: 0
no-ids: 0
no-important: 0
no-invalid-hex: 1
no-mergeable-selectors: 1
no-misspelled-properties:
- 1
- extra-properties: [ 'aspect-ratio', 'gap' ]
no-qualifying-elements:
- 1
- allow-element-with-attribute: true
allow-element-with-class: false
allow-element-with-id: false
no-trailing-whitespace: 1
no-trailing-zero: 1
no-transition-all: 0
no-universal-selectors: 0
no-url-domains: 0
no-url-protocols: 0
no-vendor-prefixes:
- 0
- additional-identifiers: []
- excluded-identifiers: []
- ignore-non-standard: false
no-warn: 1
one-declaration-per-line: 1
placeholder-in-extend: 0
placeholder-name-format:
- 0
- allow-leading-underscore: false
- convention: hyphenatedlowercase
property-sort-order:
- 1
- ignore-custom-properties: false
order:
- all
- content
- resize
- empty-cells
- float
- clear
- shape-image-threshold
- shape-margin
- shape-outside
- overflow
- overflow-x
- overflow-y
- z-index
- position
- top
- right
- bottom
- left
- transform
- transform-origin
- transform-style
- perspective
- perspective-origin
- backface-visibility
- margin
- margin-top
- margin-right
- margin-bottom
- margin-left
- visibility
- display
- box-sizing
- width
- min-width
- max-width
- height
- min-height
- max-height
- aspect-ratio
- padding
- padding-top
- padding-right
- padding-bottom
- padding-left
- grid-gap
- grid-area
- grid-row
- grid-row-start
- grid-row-end
- grid-row-gap
- grid-column
- grid-column-start
- grid-column-end
- grid-column-gap
- grid-auto-rows
- grid-auto-flow
- grid-template
- grid-template-areas
- grid-template-rows
- grid-template-columns
- gap
- flex
- flex-basis
- flex-direction
- flex-flow
- flex-grow
- flex-shrink
- flex-wrap
- order
- justify-content
- align-content
- justify-self
- align-items
- align-self
- columns
- column-width
- column-count
- column-gap
- column-rule
- column-rule-color
- column-rule-style
- column-rule-width
- column-fill
- column-span
- caption-side
- table-layout
- vertical-align
- outline
- outline-width
- outline-color
- outline-style
- outline-offset
- border
- border-top
- border-right
- border-bottom
- border-left
- border-width
- border-top-width
- border-right-width
- border-bottom-width
- border-left-width
- border-color
- border-top-color
- border-right-color
- border-bottom-color
- border-left-color
- border-style
- border-top-style
- border-right-style
- border-bottom-style
- border-left-style
- border-radius
- border-top-right-radius
- border-top-left-radius
- border-bottom-right-radius
- border-bottom-left-radius
- border-image
- border-image-source
- border-image-width
- border-image-outset
- border-image-repeat
- border-image-slice
- border-collapse
- border-spacing
- box-shadow
- clip
- clip-path
- mask
- mask-image
- mask-position
- mask-size
- mask-repeat
- mask-mode
- mask-type
- mask-clip
- object-position
- background
- background-color
- background-image
- background-position
- background-position-x
- background-position-y
- background-origin
- background-size
- background-clip
- -webkit-background-clip
- background-repeat
- background-attachment
- background-blend-mode
- color
- -webkit-text-fill-color
- -webkit-text-stroke
- -webkit-text-stroke-width
- -webkit-text-stroke-color
- font
- font-family
- src
- font-size
- font-size-adjust
- font-stretch
- font-variant
- font-weight
- font-style
- quotes
- tab-size
- letter-spacing
- line-height
- word-break
- word-spacing
- word-wrap
- white-space
- direction
- unicode-bidi
- break-after
- page-break-after
- break-before
- page-break-before
- break-inside
- page-break-inside
- text-align
- text-align-last
- text-justify
- text-indent
- text-overflow
- text-transform
- text-decoration
- text-decoration-color
- text-decoration-style
- text-decoration-line
- text-shadow
- text-emphasis
- text-emphasis-color
- filter
- opacity
- transition
- transition-delay
- transition-duration
- transition-property
- transition-timing-function
- animation
- animation-delay
- animation-direction
- animation-duration
- animation-fill-mode
- animation-iteration-count
- animation-name
- animation-play-state
- animation-timing-function
- list-style
- list-style-type
- list-style-position
- list-style-image
- counter-increment
- counter-reset
- scroll-snap-type
- scroll-snap-coordinate
- scroll-snap-destination
- cursor
- -webkit-appearance
- -webkit-font-smoothing
- -moz-osx-font-smoothing
- -webkit-overflow-scrolling
- -ms-overflow-style
property-units:
- 1
- global:
- ch
- em
- ex
- rem
- cm
- in
- mm
- pc
- pt
- px
- q
- vh
- vw
- vmin
- vmax
- deg
- grad
- rad
- turn
- ms
- s
- Hz
- kHz
- dpi
- dpcm
- dppx
- '%'
per-property: {}
pseudo-element: 0
quotes:
- 1
- style: double
shorthand-values:
- 1
- allowed-shorthands:
- 1
- 2
single-line-per-selector: 0
space-after-bang:
- 1
- include: false
space-after-colon:
- 1
- include: true
space-after-comma:
- 1
- include: true
space-around-operator:
- 0
- include: true
space-before-bang:
- 1
- include: true
space-before-brace:
- 1
- include: true
space-before-colon:
- 1
- include: false
space-between-parens:
- 1
- include: false
trailing-semicolon:
- 1
- include: true
url-quotes: 1
variable-for-property:
- 0
- properties: []
variable-name-format:
- 1
- allow-leading-underscore: false
convention: hyphenatedlowercase
zero-unit:
- 0
- include: false

394
stylelintrc Normal file
View file

@ -0,0 +1,394 @@
{
"extends": [
"stylelint-config-recommended-scss"
],
"plugins": [
"@stylistic/stylelint-plugin",
"stylelint-order"
],
"rules": {
"no-descending-specificity": [ true, { "ignore": [ "selectors-within-list" ] } ],
"no-empty-source": null,
"font-family-no-missing-generic-family-keyword": null,
"at-rule-no-vendor-prefix": true,
"color-named": [ "never", { "severity": "warning" } ],
"function-url-no-scheme-relative": true,
"media-feature-name-no-vendor-prefix": true,
"selector-no-vendor-prefix": true,
"function-name-case": "lower",
"selector-type-case": "lower",
"value-keyword-case": "lower",
"comment-empty-line-before": [ "always", { "except": [ "first-nested" ], "ignore": [ "after-comment", "stylelint-commands" ], "severity": "warning" } ],
"custom-property-empty-line-before": [ "never", { "severity": "warning" } ],
"declaration-empty-line-before": [ "never", { "severity": "warning" } ],
"rule-empty-line-before": [ "always-multi-line", { "except": [ "first-nested" ], "severity": "warning" } ],
"declaration-block-single-line-max-declarations": [ 1, { "severity": "warning" } ],
"selector-pseudo-element-colon-notation": [ "single", { "severity": "warning" } ],
"color-hex-length": [ "short", { "severity": "warning" } ],
"keyframes-name-pattern": [ "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$", { "severity": "warning", "message": "Expected keyframes name to be kebab-case" } ],
"selector-class-pattern": [ "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$", { "severity": "warning", "message": "Expected selector class name to be kebab-case" } ],
"selector-id-pattern": [ "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$", { "severity": "warning", "message": "Expected selector id name to be kebab-case" } ],
"font-family-name-quotes": [ "always-unless-keyword", { "severity": "warning" } ],
"function-url-quotes": [ "always", { "severity": "warning" } ],
"selector-attribute-quotes": [ "always", { "severity": "warning" } ],
"declaration-block-no-redundant-longhand-properties": [ true, { "severity": "warning" } ],
"shorthand-property-no-redundant-values": [ true, { "severity": "warning" } ],
"comment-whitespace-inside": [ "always", { "severity": "warning" } ],
"scss/at-each-key-value-single-line": true,
"scss/at-else-closing-brace-newline-after": [ "always-last-in-chain", { "severity": "warning" } ],
"scss/at-else-closing-brace-space-after": [ "always-intermediate", { "severity": "warning" } ],
"scss/at-else-empty-line-before": [ "never", { "severity": "warning" } ],
"scss/at-else-if-parentheses-space-before": [ "always", { "severity": "warning" } ],
"scss/at-function-pattern": [ "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$", { "severity": "warning", "message": "Expected function name to be kebab-case" } ],
"scss/at-import-partial-extension": null,
"scss/at-if-closing-brace-newline-after": [ "always-last-in-chain", { "severity": "warning" } ],
"scss/at-if-closing-brace-space-after": [ "always-intermediate", { "severity": "warning" } ],
"scss/at-if-no-null": [ true, { "severity": "warning" } ],
"scss/at-mixin-argumentless-call-parentheses": [ "never", { "severity": "warning" } ],
"scss/at-mixin-parentheses-space-before": [ "never", { "severity": "warning" } ],
"scss/at-mixin-pattern": [ "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$", { "severity": "warning", "message": "Expected mixin name to be kebab-case" } ],
"scss/dollar-variable-colon-space-after": [ "always-single-line", { "severity": "warning" } ],
"scss/dollar-variable-colon-space-before": [ "never", { "severity": "warning" } ],
"scss/dollar-variable-first-in-block": [ true, { "ignore": [ "comments", "imports" ], "severity": "warning" } ],
"scss/dollar-variable-pattern": [ "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$", { "severity": "warning", "message": "Expected $ variable name to be kebab-case" } ],
"scss/percent-placeholder-pattern": [ "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$", { "severity": "warning", "message": "Expected % placeholder name to be kebab-case" } ],
"scss/block-no-redundant-nesting": [ true, { "severity": "warning" } ],
"scss/comment-no-empty": null,
"scss/dimension-no-non-numeric-values": [ true, { "severity": "warning" } ],
"scss/operator-no-newline-after": [ true, { "severity": "warning" } ],
"scss/operator-no-newline-before": [ true, { "severity": "warning" } ],
"scss/operator-no-unspaced": [ true, { "severity": "warning" } ],
"scss/partial-no-import": true,
"scss/property-no-unknown": true,
"scss/selector-no-redundant-nesting-selector": [ true, { "severity": "warning" } ],
"scss/load-no-partial-leading-underscore": null,
"scss/no-duplicate-dollar-variables": true,
"scss/no-unused-private-members": [ true, { "severity": "warning" } ],
"@stylistic/color-hex-case": [ "lower", { "severity": "warning" } ],
"@stylistic/function-comma-newline-after": [ "always-multi-line", { "severity": "warning" } ],
"@stylistic/function-comma-newline-before": [ "never-multi-line", { "severity": "warning" } ],
"@stylistic/function-comma-space-after": [ "always-single-line", { "severity": "warning" } ],
"@stylistic/function-comma-space-before": [ "never", { "severity": "warning" } ],
"@stylistic/function-max-empty-lines": [ 0, { "severity": "warning" } ],
"@stylistic/function-parentheses-newline-inside": [ "always-multi-line", { "severity": "warning" } ],
"@stylistic/function-parentheses-space-inside": [ "never-single-line", { "severity": "warning" } ],
"@stylistic/function-whitespace-after": [ "always", { "severity": "warning" } ],
"@stylistic/number-leading-zero": [ "always", { "severity": "warning" } ],
"@stylistic/number-no-trailing-zeros": [ true, { "severity": "warning" } ],
"@stylistic/string-quotes": [ "double", { "severity": "warning" } ],
"@stylistic/unit-case": [ "lower", { "severity": "warning" } ],
"@stylistic/value-list-comma-space-after": [ "always-single-line", { "severity": "warning" } ],
"@stylistic/value-list-comma-space-before": [ "never", { "severity": "warning" } ],
"@stylistic/value-list-max-empty-lines": [ 0, { "severity": "warning" } ],
"@stylistic/property-case": [ "lower", { "severity": "warning" } ],
"@stylistic/declaration-block-semicolon-newline-after": [ "always-multi-line", { "severity": "warning" } ],
"@stylistic/declaration-block-semicolon-newline-before": [ "never-multi-line", { "severity": "warning" } ],
"@stylistic/declaration-block-semicolon-space-after": [ "always-single-line", { "severity": "warning" } ],
"@stylistic/declaration-block-semicolon-space-before": [ "never", { "severity": "warning" } ],
"@stylistic/declaration-block-trailing-semicolon": [ "always", { "severity": "warning" } ],
"@stylistic/block-closing-brace-newline-after": [ "always", { "ignoreAtRules": [ "if", "else" ], "severity": "warning" } ],
"@stylistic/block-closing-brace-empty-line-before": [ "never", { "severity": "warning" } ],
"@stylistic/block-closing-brace-newline-before": [ "always-multi-line", { "severity": "warning" } ],
"@stylistic/block-closing-brace-space-before": [ "always-single-line", { "severity": "warning" } ],
"@stylistic/block-opening-brace-newline-after": [ "always-multi-line", { "severity": "warning" } ],
"@stylistic/block-opening-brace-space-after": [ "always-single-line", { "severity": "warning" } ],
"@stylistic/block-opening-brace-space-before": [ "always", { "severity": "warning" } ],
"@stylistic/selector-list-comma-newline-before": [ "never-multi-line", { "severity": "warning" } ],
"@stylistic/selector-list-comma-space-after": [ "always-single-line", { "severity": "warning" } ],
"@stylistic/selector-list-comma-space-before": [ "never", { "severity": "warning" } ],
"@stylistic/at-rule-name-case": [ "lower", { "severity": "warning" } ],
"@stylistic/at-rule-name-newline-after": [ "always-multi-line", { "severity": "warning" } ],
"@stylistic/at-rule-name-space-after": [ "always", { "severity": "warning" } ],
"@stylistic/at-rule-semicolon-newline-after": [ "always", { "severity": "warning" } ],
"@stylistic/at-rule-semicolon-space-before": [ "never", { "severity": "warning" } ],
"@stylistic/media-feature-colon-space-after": [ "always", { "severity": "warning" } ],
"@stylistic/media-feature-name-case": [ "lower", { "severity": "warning" } ],
"@stylistic/media-feature-parentheses-space-inside": [ "never", { "severity": "warning" } ],
"@stylistic/media-feature-range-operator-space-after": [ "always", { "severity": "warning" } ],
"@stylistic/media-feature-range-operator-space-before": [ "always", { "severity": "warning" } ],
"@stylistic/named-grid-areas-alignment": [ true, { "severity": "warning" } ],
"@stylistic/indentation": [ 4, { "ignore": [ "value" ], "severity": "warning" } ],
"@stylistic/linebreaks": "unix",
"@stylistic/max-empty-lines": [ 1, { "severity": "warning" } ],
"@stylistic/no-empty-first-line": [ true, { "severity": "warning" } ],
"@stylistic/no-eol-whitespace": [ true, { "severity": "warning" } ],
"@stylistic/no-extra-semicolons": [ true, { "severity": "warning" } ],
"@stylistic/no-missing-end-of-source-newline": [ true, { "severity": "warning" } ],
"order/order": [
"dollar-variables",
"declarations",
"custom-properties",
"rules"
],
"order/properties-order": [
"content",
"resize",
"empty-cells",
"float",
"clear",
"shape-image-threshold",
"shape-margin",
"shape-outside",
"overflow",
"overflow-x",
"overflow-y",
"z-index",
"position",
"top",
"right",
"bottom",
"left",
"transform",
"transform-origin",
"transform-style",
"perspective",
"perspective-origin",
"backface-visibility",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"visibility",
"display",
"box-sizing",
"width",
"min-width",
"max-width",
"height",
"min-height",
"max-height",
"aspect-ratio",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"grid-gap",
"grid-area",
"grid-row",
"grid-row-start",
"grid-row-end",
"grid-row-gap",
"grid-column",
"grid-column-start",
"grid-column-end",
"grid-column-gap",
"grid-auto-rows",
"grid-auto-flow",
"grid-template",
"grid-template-areas",
"grid-template-rows",
"grid-template-columns",
"gap",
"flex",
"flex-basis",
"flex-direction",
"flex-flow",
"flex-grow",
"flex-shrink",
"flex-wrap",
"order",
"justify-content",
"align-content",
"justify-self",
"align-items",
"align-self",
"columns",
"column-width",
"column-count",
"column-gap",
"column-rule",
"column-rule-color",
"column-rule-style",
"column-rule-width",
"column-fill",
"column-span",
"caption-side",
"table-layout",
"vertical-align",
"outline",
"outline-width",
"outline-color",
"outline-style",
"outline-offset",
"border",
"border-top",
"border-right",
"border-bottom",
"border-left",
"border-width",
"border-top-width",
"border-right-width",
"border-bottom-width",
"border-left-width",
"border-color",
"border-top-color",
"border-right-color",
"border-bottom-color",
"border-left-color",
"border-style",
"border-top-style",
"border-right-style",
"border-bottom-style",
"border-left-style",
"border-radius",
"border-top-right-radius",
"border-top-left-radius",
"border-bottom-right-radius",
"border-bottom-left-radius",
"border-image",
"border-image-source",
"border-image-width",
"border-image-outset",
"border-image-repeat",
"border-image-slice",
"border-collapse",
"border-spacing",
"box-shadow",
"clip",
"clip-path",
"mask",
"mask-image",
"mask-position",
"mask-size",
"mask-repeat",
"mask-mode",
"mask-type",
"mask-clip",
"object-position",
"appearance",
"background",
"background-color",
"background-image",
"background-position",
"background-position-x",
"background-position-y",
"background-origin",
"background-size",
"background-clip",
"background-repeat",
"background-attachment",
"background-blend-mode",
"color",
"text-fill-color",
"text-stroke",
"text-stroke-width",
"text-stroke-color",
"font",
"font-family",
"font-size",
"font-size-adjust",
"font-stretch",
"font-variant",
"font-weight",
"font-style",
"font-smoothing",
"quotes",
"tab-size",
"letter-spacing",
"line-height",
"word-break",
"word-spacing",
"word-wrap",
"white-space",
"direction",
"unicode-bidi",
"break-after",
"page-break-after",
"break-before",
"page-break-before",
"break-inside",
"page-break-inside",
"text-align",
"text-align-last",
"text-justify",
"text-indent",
"text-overflow",
"text-transform",
"text-decoration",
"text-decoration-color",
"text-decoration-style",
"text-decoration-line",
"text-shadow",
"text-emphasis",
"text-emphasis-color",
"filter",
"opacity",
"transition",
"transition-delay",
"transition-duration",
"transition-property",
"transition-timing-function",
"animation",
"animation-delay",
"animation-direction",
"animation-duration",
"animation-fill-mode",
"animation-iteration-count",
"animation-name",
"animation-play-state",
"animation-timing-function",
"list-style",
"list-style-type",
"list-style-position",
"list-style-image",
"counter-increment",
"counter-reset",
"scroll-snap-type",
"scroll-snap-coordinate",
"scroll-snap-destination",
"cursor"
]
}
}