如何在Mono项目中统一管理Stylelint的CSS校验规则

落雪君_6751

落雪君_6751

2026-09-30

791人浏览

原创

stylelint 配置必须放在仓库根目录且统一管理,通过 overrides 按文件路径差异化配置规则,避免子包各自覆盖;需显式声明解析器支持 scss/vue/css-in-js,禁用 .stylelintignore 改用 ignorefiles 字段确保跨环境一致。

如何在mono项目中统一管理stylelint的css校验规则

Monorepo 下 Stylelint 配置文件该放哪

必须放在仓库根目录,且不能被子包各自覆盖。Stylelint 默认只从当前工作目录向上查找一个配置文件(.stylelintrc.json、stylelint.config.js 等),如果每个 packages/* 里都放一份,CLI 执行时会按 cwd 决定用哪份——结果就是跑 stylelint packages/a/**/*.css 用的是 a 包下的配置,而 CI 脚本在根目录运行 stylelint 'packages/**/*.{css,scss,vue}' 却可能漏掉某些规则或加载失败。

正确做法是:根目录一份统一配置,通过 overrides 按文件路径做差异化处理。例如:

{
  "extends": ["stylelint-config-standard"],
  "rules": {
    "color-hex-case": "lower",
    "indentation": 2
  },
  "overrides": [
    {
      "files": ["packages/components/**/*.vue"],
      "extends": ["stylelint-config-recommended-vue"],
      "rules": {
        "selector-class-pattern": "^[a-z][a-zA-Z0-9]+(__[a-z][a-zA-Z0-9]+)?(--[a-z][a-zA-Z0-9]+)?$"
      }
    },
    {
      "files": ["packages/app-legacy/**/*.scss"],
      "extends": ["stylelint-config-standard-scss"],
      "rules": {
        "at-rule-no-unknown": [true, { "ignoreAtRules": ["extend", "include"] }]
      }
    }
  ]
}

注意:overrides 是 Stylelint v14+ 原生支持的字段,不需要额外插件;旧版本需升级或改用 stylelint-config-monorepo 类封装配置。

如何让不同子包共享但不强制相同规则

靠 overrides + 规则粒度控制。比如基础组件库要禁用 !important,但业务项目允许临时覆盖;又比如 Vue 组件要求 <style scoped></style> 内 class 名必须带前缀,而纯 CSS 文件不检查。

关键不是“开/关规则”,而是把规则值设为 null 或条件化:

  • "declaration-no-important": ["packages/components/**"] → 错误写法,Stylelint 不支持路径白名单
  • 正确方式:在 overrides 中对 packages/components/** 单独启用 "declaration-no-important": true,其他包不配这条即可
  • 若某包需要例外,再套一层 overrides,用更精确的 files 匹配并设 "declaration-no-important": null

避免用 /* stylelint-disable */ 注释绕过——它破坏可追溯性,CI 无法统计违规密度,也掩盖真实约束缺口。

CSS婚礼策划服务机构宣传网站模板
CSS婚礼策划服务机构宣传网站模板

CSS婚礼策划服务机构宣传网站模板是一款适合提供婚礼策划和婚庆服务机构宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载

SCSS/Vue/Sass-in-JS 混合时的解析器陷阱

Stylelint v14+ 默认只解析 .css,遇到 .scss 或 .vue 会直接跳过或报 Unknown word 错误。这不是配置问题,是解析器没装。

必须显式声明 customSyntax 或依赖扩展配置自动注入:

  • SCSS:装 stylelint-config-standard-scss 并 extends 它,它内部已注册 postcss-scss 解析器
  • Vue SFC:stylelint-config-recommended-vue 自动处理 <style lang="scss"></style> 和 <style></style>
  • CSS-in-JS(如 styled-components):必须加 stylelint-config-styled-components,且 CLI 命令中指定 --syntax scss 或 --syntax css-in-js(取决于实际语法)

常见错误:stylelint 'src/**/*.{css,scss}' 但没装 stylelint-config-standard-scss → 所有 SCSS 文件静默跳过,零报错却等于零检查。

为什么 .stylelintignore 在 Monorepo 里容易失效

因为 .stylelintignore 只作用于执行命令时的当前工作目录。你在根目录跑 stylelint packages/**,它读取根目录的 ignore 文件;但某些 CI 工具或脚本会先进入 packages/a 再执行 stylelint src/**,这时它找的是 packages/a/.stylelintignore,而你根本没在那里放文件。

解决方案只有两个:

  • 全量 ignore 放根目录 .stylelintignore,用 glob 写绝对路径模式,例如:**/node_modules/**、**/dist/**、packages/*/test/**
  • 完全不用 .stylelintignore,改用配置里的 ignoreFiles 字段(v15+ 支持),它是配置的一部分,不受 cwd 影响

最容易被忽略的一点:VS Code 的 Stylelint 插件默认读取当前打开文件所在目录的配置和 ignore 文件,开发时看似正常,一到 CI 就行为不一致——务必在本地模拟根目录执行命令验证。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

css

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

4056

6

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

897

5

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.28

1758

6

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

2023.08.01

3226

7

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

2023.08.10

6345

11

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

2023.08.10

5411

7

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

2023.08.21

1877

9

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

2023.08.22

2571

5

css禁止点击事件
css禁止点击事件

实现css禁止点击事件的方法有使用CSS的pointer-events属性和使用JavaScript禁用点击事件。本专题为大家提供点击事件相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2213

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 5.7万人学习

CSS教程
CSS教程

共754课时 | 94.9万人学习