Skip to content

Stylelint

通常在项目用了 SCSSLess 可以考虑 Stylelint

SCSS

安装依赖

bash
pnpm add -D stylelint stylelint-config-standard-scss postcss-scss

配置文件

创建 stylelint.config.js,内容如下:

js
export default {
  extends: ['stylelint-config-standard-scss'],
  ignoreFiles: ['dist/**', 'coverage/**', 'node_modules/**'],
  overrides: [
    {
      files: ['**/*.scss'],
      customSyntax: 'postcss-scss',
    },
  ],
  rules: {
    'selector-class-pattern': null,
    'no-descending-specificity': null,
  },
}

脚本

package.json 中补充:

json
{
  "scripts": {
    "lint:style": "stylelint \"src/**/*.{scss,css}\"",
    "lint:style:fix": "stylelint \"src/**/*.{scss,css}\" --fix"
  }
}

运行

bash
pnpm lint:style
pnpm lint:style:fix

Vue + SCSS

如果项目是 Vue,并且样式写在 <style lang="scss"> 里,再安装:

bash
pnpm add -D stylelint-config-recommended-vue postcss-html

stylelint.config.js 改成:

js
export default {
  extends: ['stylelint-config-standard-scss', 'stylelint-config-recommended-vue/scss'],
  ignoreFiles: ['dist/**', 'coverage/**', 'node_modules/**'],
  overrides: [
    {
      files: ['**/*.scss'],
      customSyntax: 'postcss-scss',
    },
    {
      files: ['**/*.{vue,html}'],
      customSyntax: 'postcss-html',
    },
  ],
  rules: {
    'selector-class-pattern': null,
    'no-descending-specificity': null,
  },
}

同时把脚本改成:

json
{
  "scripts": {
    "lint:style": "stylelint \"src/**/*.{scss,css,vue}\"",
    "lint:style:fix": "stylelint \"src/**/*.{scss,css,vue}\" --fix"
  }
}

Less

如果项目主要写 Less,再安装:

bash
pnpm add -D stylelint stylelint-config-standard-less postcss-less

stylelint.config.js 改成:

js
export default {
  extends: ['stylelint-config-standard-less'],
  ignoreFiles: ['dist/**', 'coverage/**', 'node_modules/**'],
  overrides: [
    {
      files: ['**/*.less'],
      customSyntax: 'postcss-less',
    },
  ],
  rules: {
    'selector-class-pattern': null,
    'no-descending-specificity': null,
  },
}

脚本改成:

json
{
  "scripts": {
    "lint:style": "stylelint \"src/**/*.{less,css}\"",
    "lint:style:fix": "stylelint \"src/**/*.{less,css}\" --fix"
  }
}

补充

忽略局部规则

css
/* stylelint-disable-next-line color-hex-length */
.demo {
  color: #ffffff;
}

基于 MIT 许可发布