prettier-atom必须配合项目根目录的.prettierrc文件使用,仅启用format on save或调整插件ui开关无效;它不读.editorconfig、package.json中的prettier字段,且与atom-beautify共存易冲突。

Atom 本身不强制执行代码风格,必须靠插件 + 配置文件协同工作;单独开个“格式化”开关或调个 tabLength 值,根本拦不住团队里手抖多按一个空格的人。
prettier-atom 必须和 .prettierrc 一起用才生效
只装 prettier-atom 插件、不开“Format on Save”,等于没装。但开了之后发现 JS 还是缩进 4 格、单引号变双引号?问题大概率出在没配 .prettierrc。
- 插件默认行为极简:不读项目根目录的
.prettierrc,也不 fallback 到全局配置,纯靠插件 UI 里那几项开关(semi、singleQuote等)硬编码 - 真实项目需要差异化规则——比如 Vue 文件里
<script></script>块用 Prettier,<style></style>块走 stylelint,这时必须靠.prettierrc的overrides字段控制 -
.prettierrc放错位置也不行:必须在项目根目录(即package.json同级),且文件名不能是.prettierrc.json或prettier.config.js——prettier-atom只认.prettierrc(无后缀)或.prettierrc.yaml
editorconfig 和 prettier 冲突时谁赢?
答案是:prettier 覆盖 editorconfig 的同名字段,但仅限它自己支持的字段。比如 indent_size 在 .editorconfig 里设为 4,.prettierrc 里设为 2,最终以 Prettier 输出为准;但 end_of_line = lf 这种 Prettier 不管的字段,仍由 Atom 编辑器底层按 .editorconfig 执行。
- 常见翻车点:
trim_trailing_whitespace和insert_final_newline在.editorconfig里开着,但 Prettier 默认不处理换行符——结果保存后文件末尾没换行,或者行尾空格残留 - 解决办法:把这两项从
.editorconfig移到.prettierrc,并显式声明"endOfLine": "lf"和"trailingComma": "es5"(后者顺带解决逗号问题) - 别信“自动合并”——Prettier 不解析
.editorconfig,两者是平行关系,不是父子继承
atom-beautify 和 prettier-atom 能共存吗?
能,但强烈不建议。两者注册的快捷键(如 Ctrl+Alt+B)默认冲突,且对同一文件类型(如 .js)会抢着注册 grammar handler,导致格式化时随机失效。
- 典型症状:某次保存后代码缩进了,下一次又恢复原样;或右键菜单里“Beautify”和“Prettier: Format”两个选项都出现,点哪个都报
Cannot find module 'js-beautify' - 根本原因:
atom-beautify是个调度层,它根据 language-id 动态 require 格式化引擎(如prettier、js-beautify),而prettier-atom是独立进程,直接调 Prettier CLI —— 两套加载路径打架 - 务实方案:卸载
atom-beautify,保留prettier-atom+linter-pycodestyle(Python)或linter-eslint(JS),用.prettierrc控制格式,用 linter 插件抓风格违规
formatOnSave 失效的三个隐藏开关
不是所有“保存”都会触发格式化。Prettier for Atom 会在三道关卡检查:文件是否在 VCS 忽略列表里、当前 editor 是否有有效 grammar、上一次格式化是否还在 debounce 周期中。
-
Ignore VCS Ignored Paths默认开启:如果文件在.gitignore里(比如dist/下的 JS),即使手动 Ctrl+S,也不会格式化 - grammar 必须匹配:打开
.vue文件,右下角显示的是HTML而非Vue Component,那么<script></script>里的 JS 就不会被 Prettier 处理 - debounce 默认 300ms:快速连按两次 Ctrl+S,第二次会被吞掉——尤其在编辑器卡顿时更明显;可临时设为
0排查
真正难的不是配通,而是让每个新成员 clone 仓库后,第一次打开文件就自动走对的格式链路。这要求 .editorconfig、.prettierrc、package.json 里 prettier 字段、以及 Atom 插件设置四者完全对齐,缺一不可。










