Prettier 格式化 CSS 时为什么把我的嵌套规则搞乱了? ლ郭云 提问于 2026-03-11 15:37:19 阅读 48 前端 我最近在项目里配置了 Prettier,但发现它格式化 CSS 的时候,会把我在 SCSS 里写的嵌套规则直接打平,导致样式失效。明明 .prettierrc 里也没改什么特殊配置,就是默认设置。这到底是 Prettier 不支持嵌套,还是我哪里配错了? 比如下面这段 SCSS 代码,保存后就被 Prettier 改成一行,完全没法用了: .container { display: flex; .item { margin: 10px; } } 我来解答 赞 8 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 设计师冰杰 Lv1 这事儿吧,不是你配错了,是 Prettier 本身就压根不支持 SCSS 嵌套语法。 Prettier 处理 .scss 文件时,它其实是把它当作标准 CSS 来对待的。SCSS 的嵌套写法(.container { .item { ... } })在 Prettier 看来是无效语法,它可不管你是不是嵌套,一股脑给你打平成单层。 想解决这个问题,有几个思路: 最省心的办法是用 stylelint 配合 Prettier 一起用。stylelint 支持 SCSS 语法,而且有 --fix 选项能帮你格式化。安装 stylelint 和 stylelint-config-recommended-scss,然后在 package.json 里把 Prettier 放在最后一步执行,stylelint 先处理 SCSS 特有的语法。 如果你就想用 Prettier,那可以在项目根目录的 .prettierignore 里加上 *.scss,让 Prettier 跳过 SCSS 文件。缺点是你得自己手动格式化这些文件,或者用 IDE 的内置格式化。 还有一种方案是把 SCSS 编译成标准 CSS 后再让 Prettier 处理,不过这就有点绕了。 我个人推荐第一种方案,stylelint 配合 Prettier 一起上,两者各管各的,stylelint 负责 SCSS 特有的语法规则,Prettier 负责统一代码风格。 回复 点赞 2026-03-11 16:00 加载更多 相关推荐 1 回答 33 浏览 Prettier 的 singleQuote 设置为什么对 CSS 不生效? 我在 .prettierrc 里设置了 "singleQuote": true,但 CSS 文件里的字符串还是被格式化成双引号,这是为啥? 比如下面这段 CSS,保存后 Prettier 依然用的是双... 码农倩影 工具 2026-03-12 11:09:16 1 回答 42 浏览 PostCSS 插件里怎么正确处理嵌套的 at-rule? 我写了个 PostCSS 插件想遍历所有的 @media 规则,但遇到嵌套的 @media 就出问题了。比如下面这种结构,插件只处理了外层,内层直接被忽略了: @media (min-width: 7... Code°爱景 工具 2026-03-25 14:15:26 2 回答 54 浏览 Prettier 为什么没格式化我的 HTML 标签换行? 我用 Prettier 格式化 HTML 文件,但发现它没把长标签自动换行,看起来特别挤。明明在 .prettierrc 里设置了 printWidth: 80,为啥不起作用? 比如下面这段代码,Pr... Code°采涵 工具 2026-03-13 15:41:20 1 回答 43 浏览 Prettier 格式化 Vue 模板时为什么缩进不对? 我用 Prettier 格式化 Vue 文件,但模板部分的缩进总是乱的,明明配置了 tabWidth 为 2,可它还是用 4 个空格。试过重启编辑器、重装插件都没用。 这是我的组件代码: <te... 闲人志利 前端 2026-03-04 12:13:18 2 回答 40 浏览 为什么安装了prettier的husky hook后提交还是没格式化? 刚给项目配了husky + prettier的pre-commit钩子,但每次提交代码都没触发格式化。已经按文档装了husky、prettier、lint-staged,package.json里配置... 司徒兴瑞 工具 2026-02-19 12:23:27 2 回答 50 浏览 为什么Prettier插件无法正确格式化HTML中的自定义组件标签? 我在用Prettier+prettier-plugin-vue格式化Vue单文件组件时,发现自定义组件的标签会自动合并成一行,比如<MyComponent></MyComponent... Good“莉莉 工具 2026-02-16 23:08:24 2 回答 49 浏览 Vite 和 Webpack 在处理 CSS 嵌套时配置有什么不同? 我最近从 Webpack 切换到 Vite,发现原来在 Webpack 里能正常用的 CSS 嵌套写法在 Vite 里直接报错了,是不是要额外装插件? 我在组件里写了这样的样式: .container... 梦幻 Dev 前端 2026-03-23 12:49:24 1 回答 23 浏览 Prettier 为什么没格式化我的 JavaScript 代码? 我装了 Prettier 插件,也保存了文件,但这段代码一点都没变,是不是配置哪里出问题了? 我试过在 VS Code 里手动触发格式化,也检查了默认格式化工具选的是 Prettier,但还是没反应。... 百里景叶 工具 2026-03-17 17:17:16 2 回答 57 浏览 Jira自动化规则里怎么根据CSS类名触发动作? 我在Jira的Automation里想设置一个规则:当某个issue的描述中包含特定CSS类名时自动加标签。但试了好几次都没反应,是不是不支持直接匹配HTML里的class? 比如我贴了这段样式代码到... 世暄 ☘︎ 工具 2026-03-15 21:50:20 2 回答 44 浏览 Prettier 为什么总是给我加上分号?能关掉吗? 我最近在用 Prettier 格式化代码,但发现它老是在语句末尾自动加 ;,可我们团队的规范是不加分号的。我在配置文件里试过改 semi 选项,但好像没生效,是不是哪里写错了? 我的 .prettie... 开发者小敏 工具 2026-03-10 14:23:19
Prettier 处理 .scss 文件时,它其实是把它当作标准 CSS 来对待的。SCSS 的嵌套写法(
.container { .item { ... } })在 Prettier 看来是无效语法,它可不管你是不是嵌套,一股脑给你打平成单层。想解决这个问题,有几个思路:
最省心的办法是用
stylelint配合 Prettier 一起用。stylelint 支持 SCSS 语法,而且有--fix选项能帮你格式化。安装stylelint和stylelint-config-recommended-scss,然后在 package.json 里把 Prettier 放在最后一步执行,stylelint 先处理 SCSS 特有的语法。如果你就想用 Prettier,那可以在项目根目录的
.prettierignore里加上*.scss,让 Prettier 跳过 SCSS 文件。缺点是你得自己手动格式化这些文件,或者用 IDE 的内置格式化。还有一种方案是把 SCSS 编译成标准 CSS 后再让 Prettier 处理,不过这就有点绕了。
我个人推荐第一种方案,stylelint 配合 Prettier 一起上,两者各管各的,stylelint 负责 SCSS 特有的语法规则,Prettier 负责统一代码风格。