packages/stylelint-config-ali/index.cjs (90 lines of code) (raw):

const miniappTags = [ 'page', 'swiper', 'icon', 'radio', 'checkbox', 'slider', 'picker', 'navigator', 'lifestyle', ]; module.exports = { defaultSeverity: 'warning', rules: { 'block-no-empty': null, 'color-no-invalid-hex': true, 'comment-no-empty': true, 'declaration-block-no-duplicate-properties': [ true, { ignore: ['consecutive-duplicates-with-different-values'], }, ], 'declaration-block-no-shorthand-property-overrides': true, 'font-family-no-duplicate-names': true, 'font-family-no-missing-generic-family-keyword': null, // @reason 使用 iconfont 字体时会报错 'function-calc-no-unspaced-operator': true, 'function-linear-gradient-no-nonstandard-direction': true, 'keyframe-declaration-no-important': true, 'media-feature-name-no-unknown': true, 'no-descending-specificity': null, // @reason 实际有很多这样用的,且多数人熟悉 css 优先级 'no-duplicate-at-import-rules': true, 'no-duplicate-selectors': true, 'no-empty-source': null, 'no-invalid-double-slash-comments': true, 'property-no-unknown': true, 'selector-pseudo-class-no-unknown': [ true, { ignorePseudoClasses: ['global', 'local', 'export'], }, ], 'selector-pseudo-element-no-unknown': true, 'selector-type-no-unknown': [ true, { ignore: ['custom-elements'], ignoreTypes: miniappTags, }, ], 'string-no-newline': true, 'unit-no-unknown': [ true, { ignoreUnits: ['rpx'], }, ], /** * Stylistic issues * @link https://stylelint.io/user-guide/rules/list#stylistic-issues */ 'color-hex-length': 'short', 'comment-whitespace-inside': 'always', 'declaration-block-single-line-max-declarations': 1, 'length-zero-no-unit': [ true, { ignore: ['custom-properties'], }, ], 'selector-max-id': 0, }, overrides: [ // scss language support { files: ['*.scss', '**/*.scss'], customSyntax: require.resolve('postcss-scss'), plugins: [require.resolve('stylelint-scss')], rules: { // conflict css rules to disable // turn off CSS @ rule check, to support @include, @mixin usage in scss 'at-rule-no-unknown': null, // stylelint-scss rules // https://github.com/stylelint-less/stylelint-less 'scss/double-slash-comment-whitespace-inside': 'always', }, }, // less language support { files: ['*.less', '**/*.less'], customSyntax: require.resolve('postcss-less'), plugins: [require.resolve('stylelint-less')], rules: { // conflict css rules to disable // turn off CSS @ rule check, to support @ variable usage in less 'at-rule-no-unknown': null, // stylelint-less rules // https://github.com/stylelint-less/stylelint-less // don't allow duplicate variable declarations 'less/no-duplicate-variables': true, }, }, ], // don't support css-in-js because there are too many different implementations ignoreFiles: ['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx'], };