258 lines
6.3 KiB
JavaScript
258 lines
6.3 KiB
JavaScript
module.exports = {
|
||
root: true,
|
||
plugins: ['stylelint-order'],
|
||
customSyntax: 'postcss-html',
|
||
extends: ['stylelint-config-standard'],
|
||
rules: {
|
||
'selector-pseudo-class-no-unknown': [
|
||
true,
|
||
{
|
||
ignorePseudoClasses: ['global', 'deep']
|
||
}
|
||
],
|
||
'at-rule-no-unknown': [
|
||
true,
|
||
{
|
||
ignoreAtRules: ['function', 'if', 'each', 'include', 'mixin', 'extend', 'use']
|
||
}
|
||
],
|
||
'media-query-no-invalid': null,
|
||
'function-no-unknown': null,
|
||
'no-empty-source': null,
|
||
'named-grid-areas-no-invalid': null,
|
||
// 'unicode-bom': 'never',
|
||
'no-descending-specificity': null,
|
||
'font-family-no-missing-generic-family-keyword': null,
|
||
// 'declaration-colon-space-after': 'always-single-line',
|
||
// 'declaration-colon-space-before': 'never',
|
||
// 'declaration-block-trailing-semicolon': null,
|
||
'rule-empty-line-before': [
|
||
'always',
|
||
{
|
||
ignore: ['after-comment', 'first-nested']
|
||
}
|
||
],
|
||
'unit-no-unknown': [
|
||
true,
|
||
{
|
||
ignoreUnits: ['rpx']
|
||
}
|
||
],
|
||
'order/order': [
|
||
[
|
||
'dollar-variables',
|
||
'custom-properties',
|
||
'at-rules',
|
||
'declarations',
|
||
{
|
||
type: 'at-rule',
|
||
name: 'supports'
|
||
},
|
||
{
|
||
type: 'at-rule',
|
||
name: 'media'
|
||
},
|
||
'rules'
|
||
],
|
||
{
|
||
severity: 'warning'
|
||
}
|
||
],
|
||
// Specify the alphabetical order of the attributes in the declaration block
|
||
'order/properties-order': [
|
||
'position',
|
||
'top',
|
||
'right',
|
||
'bottom',
|
||
'left',
|
||
'z-index',
|
||
'display',
|
||
'float',
|
||
'width',
|
||
'height',
|
||
'max-width',
|
||
'max-height',
|
||
'min-width',
|
||
'min-height',
|
||
'padding',
|
||
'padding-top',
|
||
'padding-right',
|
||
'padding-bottom',
|
||
'padding-left',
|
||
'margin',
|
||
'margin-top',
|
||
'margin-right',
|
||
'margin-bottom',
|
||
'margin-left',
|
||
'margin-collapse',
|
||
'margin-top-collapse',
|
||
'margin-right-collapse',
|
||
'margin-bottom-collapse',
|
||
'margin-left-collapse',
|
||
'overflow',
|
||
'overflow-x',
|
||
'overflow-y',
|
||
'clip',
|
||
'clear',
|
||
'font',
|
||
'font-family',
|
||
'font-size',
|
||
'font-smoothing',
|
||
'osx-font-smoothing',
|
||
'font-style',
|
||
'font-weight',
|
||
'hyphens',
|
||
'src',
|
||
'line-height',
|
||
'letter-spacing',
|
||
'word-spacing',
|
||
'color',
|
||
'text-align',
|
||
'text-decoration',
|
||
'text-indent',
|
||
'text-overflow',
|
||
'text-rendering',
|
||
'text-size-adjust',
|
||
'text-shadow',
|
||
'text-transform',
|
||
'word-break',
|
||
'word-wrap',
|
||
'white-space',
|
||
'vertical-align',
|
||
'list-style',
|
||
'list-style-type',
|
||
'list-style-position',
|
||
'list-style-image',
|
||
'pointer-events',
|
||
'cursor',
|
||
'background',
|
||
'background-attachment',
|
||
'background-color',
|
||
'background-image',
|
||
'background-position',
|
||
'background-repeat',
|
||
'background-size',
|
||
'border',
|
||
'border-collapse',
|
||
'border-top',
|
||
'border-right',
|
||
'border-bottom',
|
||
'border-left',
|
||
'border-color',
|
||
'border-image',
|
||
'border-top-color',
|
||
'border-right-color',
|
||
'border-bottom-color',
|
||
'border-left-color',
|
||
'border-spacing',
|
||
'border-style',
|
||
'border-top-style',
|
||
'border-right-style',
|
||
'border-bottom-style',
|
||
'border-left-style',
|
||
'border-width',
|
||
'border-top-width',
|
||
'border-right-width',
|
||
'border-bottom-width',
|
||
'border-left-width',
|
||
'border-radius',
|
||
'border-top-right-radius',
|
||
'border-bottom-right-radius',
|
||
'border-bottom-left-radius',
|
||
'border-top-left-radius',
|
||
'border-radius-topright',
|
||
'border-radius-bottomright',
|
||
'border-radius-bottomleft',
|
||
'border-radius-topleft',
|
||
'content',
|
||
'quotes',
|
||
'outline',
|
||
'outline-offset',
|
||
'opacity',
|
||
'filter',
|
||
'visibility',
|
||
'size',
|
||
'zoom',
|
||
'transform',
|
||
'box-align',
|
||
'box-flex',
|
||
'box-orient',
|
||
'box-pack',
|
||
'box-shadow',
|
||
'box-sizing',
|
||
'table-layout',
|
||
'animation',
|
||
'animation-delay',
|
||
'animation-duration',
|
||
'animation-iteration-count',
|
||
'animation-name',
|
||
'animation-play-state',
|
||
'animation-timing-function',
|
||
'animation-fill-mode',
|
||
'transition',
|
||
'transition-delay',
|
||
'transition-duration',
|
||
'transition-property',
|
||
'transition-timing-function',
|
||
'background-clip',
|
||
'backface-visibility',
|
||
'resize',
|
||
'appearance',
|
||
'user-select',
|
||
'interpolation-mode',
|
||
'direction',
|
||
'marks',
|
||
'page',
|
||
'set-link-source',
|
||
'unicode-bidi',
|
||
'speak'
|
||
]
|
||
},
|
||
ignoreFiles: ['**/*.js', '**/*.jsx', '**/*.tsx', '**/*.ts'],
|
||
overrides: [
|
||
{
|
||
files: ['*.vue', '**/*.vue', '*.html', '**/*.html'],
|
||
extends: ['stylelint-config-recommended', 'stylelint-config-html'],
|
||
rules: {
|
||
'keyframes-name-pattern': null,
|
||
'selector-class-pattern': null,
|
||
'no-duplicate-selectors': null,
|
||
'selector-pseudo-class-no-unknown': [
|
||
true,
|
||
{
|
||
ignorePseudoClasses: ['deep', 'global']
|
||
}
|
||
],
|
||
'selector-pseudo-element-no-unknown': [
|
||
true,
|
||
{
|
||
ignorePseudoElements: ['v-deep', 'v-global', 'v-slotted']
|
||
}
|
||
],
|
||
// Vue SFC 样式里会使用 @use、@include 等 SCSS at-rule。
|
||
'at-rule-no-unknown': [
|
||
true,
|
||
{
|
||
ignoreAtRules: ['function', 'if', 'each', 'include', 'mixin', 'extend', 'use']
|
||
}
|
||
],
|
||
// TagsView 使用的 WebKit 私有 mask 语法有效,但 Stylelint 不能完整识别。
|
||
'declaration-property-value-no-unknown': [
|
||
true,
|
||
{
|
||
ignoreProperties: {
|
||
'-webkit-mask-box-image': [/.*/]
|
||
}
|
||
}
|
||
]
|
||
}
|
||
},
|
||
// 独立 SCSS 文件不会被全局 postcss-html 语法完整检查。
|
||
// 先只让这个 IM 选择弹窗公共 partial 使用 SCSS parser,暂不放大全量历史 SCSS 问题。
|
||
{
|
||
files: ['src/views/im/home/components/picker/picker-dialog.scss'],
|
||
customSyntax: 'postcss-scss'
|
||
}
|
||
]
|
||
}
|