Skip to content

(三十七)代码美化神器 在webpack中使用stylelint

阿峰 edited this page Jun 30, 2023 · 2 revisions

步骤三十七

代码美化神器 在webpack中使用stylelint

在 Stylelint v15 版本之后,Stylelint 默认关闭了所有与 prettier 相冲突的风格规则,所以不需要安装stylelint-config-prettier了。

  1. 安装依赖
yarn add stylelint stylelint-config-css-modules stylelint-config-standard stylelint-order stylelint-webpack-plugin -D
  1. 在根目录创建 .stylelintrc.js 文件
// .stylelintrc.js
module.exports = {
  processors: [],
  plugins: ['stylelint-order'],
  extends: ['stylelint-config-standard', 'stylelint-config-css-modules'],
  rules: {
    'selector-class-pattern': [
      // 命名规范 -
      '^([a-z][a-z0-9]*)?(-[a-z][a-z0-9]*)*$',
      {
        message: 'Expected class selector to be kebab-case',
      },
    ],
    'color-function-notation': 'legacy',
    'max-line-length': null,
    'string-quotes': 'single', // 单引号
    'at-rule-empty-line-before': null,
    'at-rule-no-unknown': null,
    'at-rule-name-case': 'lower', // 指定@规则名的大小写
    'length-zero-no-unit': true, // 禁止零长度的单位(可自动修复)
    'shorthand-property-no-redundant-values': true, // 简写属性
    'number-leading-zero': 'never', // 小数不带0
    'declaration-block-no-duplicate-properties': true, // 禁止声明快重复属性
    'no-descending-specificity': true, // 禁止在具有较高优先级的选择器后出现被其覆盖的较低优先级的选择器。
    // 'selector-max-id': 1, // 限制一个选择器中 ID 选择器的数量
    'max-nesting-depth': 4,
    indentation: [
      2,
      {
        // 指定缩进  warning 提醒
        severity: 'warning',
      },
    ],
    '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',
      '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-color',
      'border',
      'border-radius',
      'content',
      'outline',
      'outline-offset',
      'opacity',
      'filter',
      'visibility',
      'size',
      'transform',
    ],
  },
};
  1. 在根目录创建 .stylelintignore 文件不进行css代码检测
build
dist
*.js
*.tsx
*.ts
*.json
*.png
*.eot
*.ttf
*.woff
*.css

在 webpack 中使用,保存时候就可以格式化

  1. 首先,你需要安装 stylelint-webpack-plugin:
npm install stylelint-webpack-plugin --save-dev
  1. 注意:如果你还没有安装 stylelint >= 13,请先用 npm 进行安装:
npm install stylelint --save-dev
  1. 然后添加该插件到你的 webpack 配置中。例如:
module.exports = {
  // ...
  plugins: [
    // 样式代码中避免错误并强制规范
    new StylelintPlugin({
      configFile: path.resolve(__dirname, '../.stylelintrc.js'),
      extensions: ['less'],
      files: 'src/**/*.less',
      fix: true,
      customSyntax: 'postcss-less',
      lintDirtyModulesOnly: true,
      threads: true,
      exclude: ['node_modules'],
    }),
  ],
  // ...
};

image

因为没有安装 postcss-less

yarn add postcss-less -D  

搞定。

Clone this wiki locally