5月27日 22:03

Prettier 的 .prettierignore 怎么配置?有哪些常用规则和踩坑点?

.prettierignore 文件怎么写?

.prettierignore 放在项目根目录,语法和 .gitignore 完全一致。写好它才能放心跑 prettier --write .,否则会格式化不该动的文件。

shell
node_modules dist build coverage *.min.js *.min.css package-lock.json pnpm-lock.yaml

Prettier 默认会忽略哪些文件?

不需要手动写,Prettier 自动忽略:

  • 版本控制目录:.git.svn.hg
  • node_modules(除非显式加 --with-node-modules

另外,Prettier 自动读取同目录下的 .gitignore,所以 .gitignore 里已经排除的文件不需要在 .prettierignore 里重复写。

四种忽略模式怎么用?

1. 目录忽略

shell
node_modules **/dist

2. 扩展名忽略

shell
*.min.js *.min.css *.d.ts

3. 路径通配符

shell
src/**/*.generated.ts !src/vendor/*.js

! 是否定模式,表示"前面忽略的里面,这条除外"。

4. 行内忽略(prettier-ignore 注释)

不想格式化某一段代码,在上方加注释:

js
// prettier-ignore const matrix = [ [1, 000, 000], [0, 1, 000], [0, 000, 1] ];

HTML 里用 <!-- prettier-ignore -->,Markdown 里用 <!-- prettier-ignore -->,CSS 里用 /* prettier-ignore */。每种文件类型都有对应的注释语法。

CLI 相关的忽略参数有哪些?

  • --ignore-path .prettierignore.custom:指定自定义 ignore 文件路径
  • --with-node-modules:取消默认对 node_modules 的忽略
  • --list-different(别名 -l):只列出不符合格式的文件名,CI 场景常用
bash
# 用自定义 ignore 文件格式化 prettier --write --ignore-path .prettierignore.custom "src/**/*.js" # CI 中检查是否有未格式化的文件 prettier --check "src/**/*.js"

常见踩坑

ignore 规则写了不生效? 检查文件是否放在项目根目录,语法是否和 .gitignore 一致。

想格式化被忽略的文件? 直接传绝对路径给 prettier,ignore 规则不拦截绝对路径。

.prettierignore.gitignore 规则冲突怎么办? .prettierignore 优先级更高。如果 .gitignore 排除了某个文件,但 .prettierignore 没有排除,Prettier 仍会格式化它。

标签:Prettier