必须安装 stylelint-order 插件,否则 order/properties-order 规则不生效;其不自动修复主因是插件未加入 plugins 数组、配置文件名与格式不匹配、规则未置于 rules 根层级或被预设覆盖。

必须装 stylelint-order 插件,否则 order/properties-order 规则完全不生效 —— 配了也白配。
为什么 order/properties-order 不自动修复?
多数人配置完发现 stylelint --fix 对属性顺序毫无反应,根本原因就四个:
-
stylelint-order没进plugins数组(只写了extends不行) - 配置文件名是
.stylelintrc但内容是 JS 对象,应改用.stylelintrc.js或stylelint.config.js -
order/properties-order写在了overrides外层或嵌套过深,实际没被加载到 rules 根层级 - 项目已用了
stylelint-config-rational-order这类预设,它内部自带order/properties-order,直接覆盖你手写的规则
怎么写 order/properties-order 才真正可控?
该规则只接受数组,三种写法对应不同场景,别一上来就堆几十个属性:
-
扁平数组:适合快速统一小项目,漏写的属性默认排最后,不报错也不调整
["position", "top", "right", "z-index", "display", "flex"] -
分组对象:推荐中大型项目,能加空行、逻辑清晰,但
groupName纯属注释,不影响校验[{"groupName":"Positioning","properties":["position","top"]},{"emptyLineBefore":"always","properties":["color","font-size"]}] - 混合模式:允许组内混入单个属性,灵活但易出错,除非真有特殊需求,否则少用
Monorepo 场景下最容易忽略的兼容点
在 Rush 或 Turborepo 这类多包仓库里,order/properties-order 的生效范围极易失控:
- 如果各包各自配
.stylelintrc.js,属性顺序规则可能不一致 —— 必须抽成共享配置包(如@coze-arch/stylelint-config),统一extends -
postcss-less或postcss-html等 customSyntax 插件若未在overrides中显式指定,.vue或.less文件里的 style 标签会被跳过,排序失效 - Less 变量(如
@spacing-md)和 CSS 自定义属性(--ds-spacing-md)不会被order/properties-order管理,它们需要单独用custom-property-pattern或at-rule-name-pattern约束
真正难的不是写对那几行配置,而是让所有包、所有文件类型、所有语法变体(CSS/SCSS/Less/Vue SFC)都走同一套顺序逻辑 —— 这需要插件、语法解析器、配置继承三层对齐,缺一不可。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











