Prettier 格式化 CSS 时为什么把我的嵌套规则搞乱了? ლ郭云 提问于 2026-03-11 15:37:19 阅读 6 前端 我最近在项目里配置了 Prettier,但发现它格式化 CSS 的时候,会把我在 SCSS 里写的嵌套规则直接打平,导致样式失效。明明 .prettierrc 里也没改什么特殊配置,就是默认设置。这到底是 Prettier 不支持嵌套,还是我哪里配错了? 比如下面这段 SCSS 代码,保存后就被 Prettier 改成一行,完全没法用了: .container { display: flex; .item { margin: 10px; } } 我来解答 赞 2 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 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 回答 3 浏览 Prettier 的 singleQuote 设置为什么对 CSS 不生效? 我在 .prettierrc 里设置了 "singleQuote": true,但 CSS 文件里的字符串还是被格式化成双引号,这是为啥? 比如下面这段 CSS,保存后 Prettier 依然用的是双... 码农倩影 工具 2026-03-12 11:09:16 1 回答 3 浏览 Prettier 为什么没格式化我的 HTML 标签换行? 我用 Prettier 格式化 HTML 文件,但发现它没把长标签自动换行,看起来特别挤。明明在 .prettierrc 里设置了 printWidth: 80,为啥不起作用? 比如下面这段代码,Pr... Code°采涵 工具 2026-03-13 15:41:20 1 回答 16 浏览 Prettier 格式化 Vue 模板时为什么缩进不对? 我用 Prettier 格式化 Vue 文件,但模板部分的缩进总是乱的,明明配置了 tabWidth 为 2,可它还是用 4 个空格。试过重启编辑器、重装插件都没用。 这是我的组件代码: <te... 闲人志利 前端 2026-03-04 12:13:18 2 回答 27 浏览 为什么安装了prettier的husky hook后提交还是没格式化? 刚给项目配了husky + prettier的pre-commit钩子,但每次提交代码都没触发格式化。已经按文档装了husky、prettier、lint-staged,package.json里配置... 司徒兴瑞 工具 2026-02-19 12:23:27 2 回答 31 浏览 为什么Prettier插件无法正确格式化HTML中的自定义组件标签? 我在用Prettier+prettier-plugin-vue格式化Vue单文件组件时,发现自定义组件的标签会自动合并成一行,比如<MyComponent></MyComponent... Good“莉莉 工具 2026-02-16 23:08:24 1 回答 15 浏览 Prettier 为什么总是给我加上分号?能关掉吗? 我最近在用 Prettier 格式化代码,但发现它老是在语句末尾自动加 ;,可我们团队的规范是不加分号的。我在配置文件里试过改 semi 选项,但好像没生效,是不是哪里写错了? 我的 .prettie... 开发者小敏 工具 2026-03-10 14:23:19 1 回答 17 浏览 Prettier 格式化时该选哪个 Parser? 我在用 Prettier 格式化一个 .vue 文件,但控制台提示“Parser not found”。我试过在配置里指定 parser 为 vue,但好像不对?官方文档说会自动识别,可我的项目就是不... 设计师爱娜 工具 2026-03-08 13:16:19 1 回答 22 浏览 postcss-nested 嵌套写法不生效是怎么回事? 我用 Vite + PostCSS 配置了 postcss-nested,但写嵌套 CSS 时完全没效果,编译后还是原样输出,是不是插件没生效? 我已经在 postcss.config.js 里加了插... UP主~若溪 工具 2026-03-05 08:39:19 1 回答 31 浏览 PostCSS处理AST时如何准确匹配特定CSS规则? 我最近在用 PostCSS 写一个插件,想只处理某些特定的 CSS 规则,比如 class 名包含 btn- 的选择器。但发现用 rule.selector.includes('btn-') 会误匹配... 伟伟 工具 2026-03-05 03:27:24 2 回答 25 浏览 ESLint 和 Prettier 配合时为什么格式化冲突? 我按照网上的教程配了 ESLint + Prettier,但保存文件时格式老是打架。比如 Prettier 想加个分号,ESLint 却报错说不能加分号,明明 .eslintrc 里已经关了这个规则。... Newb.一涵 工具 2026-02-28 13:00:20
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 负责统一代码风格。