Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@frontlint/stylelint

shibin-you34MIT0.0.1TypeScript support: included

stylelint 是一个强大的 CSS 代码检查工具,用于强制执行一致的代码风格,避免样式错误并提高代码质量。通过自定义规则集,可以确保团队遵循统一的 CSS 编码标准

stylelint, stylelint-config-standard-scss, stylelint-order

readme

@frontlint/stylelint

stylelint 是一个强大的 CSS 代码检查工具,用于强制执行一致的代码风格,避免样式错误并提高代码质量。通过自定义规则集,可以确保团队遵循统一的 CSS 编码标准

安装

首先安装 stylelint

npm i stylelint -D

安装 FrontLintstylelint 预设配置,它提供了开箱即用的最佳实践规则:

npm i @frontlint/stylelint

配置

创建 .stylelintrc.js 文件在项目根目录:

export default {
  extends: ['@frontlint/stylelint'],
}

如需自定义规则,可以覆盖默认配置:

export default {
  extends: ['@frontlint/stylelint'],
  ignoreFiles: ['**/node_modules/**', '**/dist/**', '**/coverage/**'],
  rules: {
    'color-hex-case': 'lower',
    'selector-class-pattern': null,
  },
}

使用方式

命令行使用

添加以下脚本到 package.json

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

运行检查:

npm run lint:style

运行修复

npm run lint:style:fix

编辑器集成

  1. 安装 Stylelint 扩展
  2. 添加 VS Code 配置:
// .vscode/settings.json
{
  "editor.codeActionsOnSave": {
    "source.fixAll": "explicit"
  },
  "editor.formatOnSave": true,
  "stylelint.validate": ["css", "scss", "less"]
}

规则

stylelint-config-standard

stylelint-config-standardstylelint 官方推荐的标准配置集,它实现了业界认可的 css 编码约定。FrontLint 使用这个配置作为基础,并进行了扩展

语法错误检测

/* 错误示例 - 缺少分号 */
.element {
  color: #333
  margin: 10px;
}

/* 正确示例 */
.element {
  color: #333;
  margin: 10px;
}

格式规范

强制执行一致的格式约定:

  • 缩进规则(2空格)
  • 空格使用规范
  • 换行规则
  • 颜色格式规范
/* 不符合规范 */
.element {
  color: rgba(0, 0, 0, 0.5);
  margin: 0;
}

/* 符合规范 */
.element {
  color: rgba(0, 0, 0, 0.5);
  margin: 0;
}

命名约定

确保选择器和类名遵循一致的命名模式:

/* 不推荐 */
.userProfileContainer {
  /* 驼峰式命名 */
  display: flex;
}

/* 推荐 - 使用连字符分隔 */
.user-profile-container {
  display: flex;
}

限制功能

防止使用过时或存在兼容性问题的特性:

/* 不推荐 - 旧的IE滤镜 */
.element {
  filter: progid:DXImageTransform.Microsoft.gradient(...);
}

值验证

验证属性值是否符合规范:

/* 错误 - 无效的颜色值 */
.element {
  color: #xyz;
}

/* 错误 - 无效的长度单位 */
.element {
  width: 50pixels;
}

冗余检测

检测和报告冗余或重复的声明:

/* 冗余示例 */
.element {
  margin-top: 10px;
  margin-top: 20px; /* 重复声明 */
}

stylelint-config-standard-scss

当启用 scss 选项时,FrontLint 会使用 stylelint-config-standard-scss 配置,它扩展了标准配置并添加了对 scss 语法的支持:

  • 嵌套规则验证
  • 变量命名规范
  • @mixin@include 使用规则
  • 占位符选择器规范

stylelint-order

FrontLint 使用 stylelint-order 插件强制执行 CSS 属性的特定排序,提高代码一致性和可读性。属性按照以下逻辑分组排序:

  • 定位属性(position, top, z-index等)
  • 布局属性(display, flex等)
  • 尺寸属性(width, height等)
  • 边距属性(margin, padding)
  • 边框属性(border, border-radius)
  • 背景属性(background等)
  • 文本属性(color, font等)
  • 其他视觉效果(opacity, transform等)

这种排序方式遵循"从外到内"的原则,使代码结构更符合元素渲染的逻辑顺序。

<summary>顺序规则</summary>
// 顺序规则
export default [
  // 定位
  'position',
  'top',
  'right',
  'bottom',
  'left',
  'z-index',
  'inset',

  // 布局
  'display',
  'flex',
  'flex-direction',
  'flex-wrap',
  'flex-flow',
  'justify-content',
  'align-items',
  'align-content',
  'grid',
  'grid-template',
  'grid-template-columns',
  'grid-template-rows',

  // 尺寸
  'width',
  'min-width',
  'max-width',
  'height',
  'min-height',
  'max-height',

  // 外边距
  'margin',
  'margin-top',
  'margin-right',
  'margin-bottom',
  'margin-left',

  // 内边距
  'padding',
  'padding-top',
  'padding-right',
  'padding-bottom',
  'padding-left',

  // 边框
  'border',
  'border-width',
  'border-style',
  'border-color',
  'border-radius',

  // 背景
  'background',
  'background-color',
  'background-image',
  'background-position',
  'background-repeat',
  'background-size',

  // 文本
  'color',
  'font',
  'font-size',
  'font-family',
  'font-weight',
  'text-align',
  'text-decoration',
  'line-height',
  'letter-spacing',

  // 其他视觉效果
  'opacity',
  'box-shadow',
  'transform',
  'transition',
  'animation',
]