@efficientcss/stylelint-config-ecss
Version:
Linting rules for EfficientCSS
321 lines (315 loc) • 9.95 kB
JavaScript
import printMessage from './lib/printmessage.js';
import * as selectors from './lib/selectors.js';
export default {
"plugins": [
"./plugins/ecss-position-sensitive",
"./plugins/ecss-align-display",
"./plugins/ecss-z-index-static",
"./plugins/ecss-overflow-hidden",
"./plugins/ecss-large-selector-rule",
"./plugins/ecss-content-block",
"./plugins/ecss-class-numbered",
"./plugins/ecss-not-class",
"./plugins/ecss-selector-dimensions",
"./plugins/ecss-relative-width",
"./plugins/ecss-width-100p",
"./plugins/ecss-flex-prop",
"./plugins/ecss-flex-children",
"./plugins/ecss-flex-shorthand",
"./plugins/ecss-technique-centered",
"./plugins/ecss-padding-constraints",
"./plugins/ecss-component-outside",
"./plugins/ecss-spacing-large",
"./plugins/ecss-position-prop",
"./plugins/ecss-tag-scoped-class",
"./plugins/ecss-class-child-prefix",
"./plugins/ecss-content-float",
"./plugins/ecss-component-dimensions",
"./plugins/ecss-content-margin",
"./plugins/ecss-class-combined-prefix",
"./plugins/ecss-content-padding",
"./plugins/ecss-selector-filename",
"./plugins/stylelint-z-index-value-constraint",
"./plugins/stylelint-csstree-validator",
"./plugins/ecss-ignored-properties",
"./plugins/ecss-selector-unnecessary",
"./plugins/stylelint-magic-numbers",
"./plugins/ecss-commented-code",
"stylelint-file-max-lines"
],
"rules": {
"ecss/position-sensitive": [true, {
"severity": "warning",
"message": (selector, prop) => {
return printMessage("position-sensitive", selector, prop);
}
}],
"ecss/align-display": [true, {
"message": (selector, prop) => {
return printMessage("align-display", selector, prop);
}
}],
"ecss/z-index-static": [true, {
"message": (selector) => {
return printMessage("z-index-static", selector);
}
}],
"ecss/overflow-hidden": [true, {
"message": (selector) => {
return printMessage("overflow-hidden", selector);
}
}],
"ecss/large-selector-rule": [true, {
"message": (selector, prop) => {
return printMessage("large-selector-rule", selector, prop);
}
}],
"ecss/content-block": [true, {
"message": (selector, prop) => {
return printMessage("content-block", selector, prop);
}
}],
"ecss/class-numbered": [true, {
"message": (selector) => {
return printMessage("class-numbered", selector);
}
}],
"ecss/not-class": [true, {
"message": (selector) => {
return printMessage("not-class", selector);
}
}],
"ecss/selector-dimensions": [true, {
"message": (selector, prop) => {
return printMessage("selector-dimensions", selector, prop);
}
}],
"ecss/relative-width": [true, {
"message": (selector, prop) => {
return printMessage("relative-width", selector, prop);
}
}],
"ecss/width-100p": [true, {
"message": (selector, prop) => {
return printMessage("width-100p", selector, prop);
}
}],
"ecss/flex-prop": [true, {
"message": (selector, prop) => {
return printMessage("flex-prop", selector, prop);
}
}],
"ecss/flex-children": [true, {
"message": (selector, prop) => {
return printMessage("flex-children", selector, prop);
}
}],
"ecss/flex-shorthand": [true, {
"message": (selector, prop) => {
return printMessage("flex-shorthand", selector, prop);
}
}],
"ecss/technique-centered": [true, {
"message": (selector, prop) => {
return printMessage("technique-centered", selector, prop);
}
}],
"ecss/padding-constraints": [true, {
"message": (selector, prop) => {
return printMessage("padding-constraints", selector, prop);
}
}],
"ecss/component-outside": [true, {
"message": (selector, prop) => {
return printMessage("component-outside", selector, prop);
}
}],
"ecss/spacing-large": [true, {
"message": (selector, prop) => {
return printMessage("spacing-large", selector, prop);
}
}],
"ecss/position-prop": [true, {
"message": (selector, prop) => {
return printMessage("position-prop", selector, prop);
}
}],
"ecss/tag-scoped-class": [true, {
"message": (selector) => {
return printMessage("tag-scoped-class", selector);
}
}],
"ecss/content-float": [true, {
"message": (selector) => {
return printMessage("content-float", selector);
}
}],
"ecss/component-dimensions": [true, {
"message": (selector, prop) => {
return printMessage("component-dimensions", selector, prop);
}
}],
"ecss/content-margin": [true, {
"message": (selector, prop) => {
return printMessage("content-margin", selector, prop);
}
}],
"ecss/class-combined-prefix": [true, {
"message": (selector) => {
return printMessage("class-combined-prefix", selector);
}
}],
"ecss/content-padding": [true, {
"message": (selector) => {
return printMessage("content-padding", selector);
}
}],
"ecss/class-child-prefix": [true, {
"message": (selector) => {
return printMessage("class-child-prefix", selector)}
}],
"ecss/selector-filename": [true, {
"message": (selector, prop) => {
return printMessage("component-selector", selector, prop)},
"ignoreFiles": ["quarantine.css", "main.css", "base.css", "reset.css", "general.css", "/style/"]
}],
"ecss/commented-code": [true, {
"message": printMessage("commented-code")
}],
"plugin/file-max-lines": [200, {
"ignore": ["comments", "blankLines"],
"severity": "warning",
"message": printMessage("file-lines")
}],
"plugin/z-index-value-constraint": [{
"min": 0,
"max": 10
}, {
"ignoreValues": [-1],
"message": (selector, prop) => {
return printMessage("z-index-band", selector, prop)}
}],
"function-calc-no-unspaced-operator": [true, {
"message": (selector, prop) => {
return printMessage("calc-unspaced", selector, prop)}
}],
"function-no-unknown": [true, {
"message": (selector) => {
return printMessage("function-unknown", selector)}
}],
"unit-no-unknown": [true, {
"message": (selector, prop) => {
return printMessage("unit-unknown", selector, prop)}
}],
"csstree/validator": [{
"ignoreProperties": ["/container/"],
"ignoreValue": "clamp",
"ignoreAtrules": ["container"]
}, {
"message": (selector, prop) => {
return printMessage("syntax-invalid", selector, prop)}
}],
"number-max-precision": [5, {
"ignoreUnits": ["em", "rem", "/v/", "s"],
"ignoreProperties": ["/--/"],
"message": (selector, prop) => {
return printMessage("floating-max", selector, prop)}
}],
"declaration-block-no-duplicate-custom-properties": [true, {
"message": (selector) => {
return printMessage("custom-property-duplicate", selector)}
}],
"declaration-block-no-duplicate-properties": [true, {
"message": (selector) => {
return printMessage("property-duplicate", selector)}
}],
"custom-property-no-missing-var-function": [true, {
"message": (selector, prop) => {
return printMessage("var-function-missing", selector, prop)}
}],
"ecss/ignored-properties": [true, {
"message": (selector, prop) => {
return printMessage("property-ignored", selector, prop)}
}],
"ecss/selector-unnecessary": [true, {
"message": (selector, prop) => {
return printMessage("selector-unnecessary", selector, prop)}
}],
"block-no-empty": [true, {
"message": () => {
return printMessage("block-empty")}
}],
"unit-disallowed-list": [
["vh", "vw"],
{
"message": (selector, prop) => {
return printMessage("unit-disallowed", selector, prop)},
"severity": "warning",
"ignoreFunctions": ["clamp"]
}
],
"declaration-property-unit-disallowed-list": [{
"height": ["vh"]
},{
"message": (selector, prop) => {
return printMessage("property-unit-disallowed", selector, prop)}
}],
"declaration-no-important": [true, {
"message": (selector, prop) => {
return printMessage("declaration-important", selector, prop)}
}],
"selector-max-compound-selectors": [5, {
"message": (selector, maxValue) => {
return printMessage("selector-max", selector, undefined, maxValue+".")}
}],
"selector-max-class": [3, {
"message": (selector, maxValue) => {
return printMessage("class-max", selector, undefined, maxValue+".")}
}],
"selector-max-type": [4, {
"message": (selector, maxValue) => {
return printMessage("type-max", selector, undefined, maxValue+".")}
}],
"selector-max-universal": [2, {
"message": (selector, prop) => {
return printMessage("universal-max", selector, prop)}
}],
"no-duplicate-at-import-rules": [true, {
"message": (selector, prop) => {
return printMessage("import-duplicate", selector, prop)}
}],
"no-irregular-whitespace": [true, {
"message": (selector, prop) => {
return printMessage("whitespace-irregular", selector, prop)}
}],
"selector-no-qualifying-type": [true, {
"ignore": ["attribute"],
"message": (selector, prop) => {
return printMessage("selector-qualified", selector, prop)}
}],
"selector-max-id": [0, {
"message": (selector, prop) => {
return printMessage("selector-id", selector, prop)}
}],
"selector-nested-pattern": ["^&", {
message: printMessage("nesting-pattern"),
"splitList": true
}],
"max-nesting-depth": [2, {
message: printMessage("nesting-level")
}],
"selector-max-specificity": ["0,2,4", {
"message": (selector) => {
return printMessage("specificity-max", selector)},
"ignoreSelectors": [/:.*/]
}],
"magic-numbers/magic-colors": null,
"magic-numbers/magic-numbers": [true, {
"ignoreProperties": ["font-weight", "background", "background-image", "content"],
"acceptedValues": [/[0-9]+0(%|ms|s|ch|px|rem|em|fr|v.*)?/, /(12|13)px/, /^(0|1)?\.[0-9]+(%|ms|s|ch|px|rem|em|v.*)?/],
"acceptedNumbers": [/[0-9]/, /^(0|1)?\.[0-9]*$/],
"message": (selector, prop) => {
return printMessage("magic-number", selector, prop)}
}]
}
}