【笔记】Prettier 小记

Prettier 小记
介绍
按官方介绍,Prettier 是一款支持多种语言的代码格式化工具,它适配各种编辑器,并且配置参数少。像React、Babel等众多知名前端工具库都用到了它。
它的格式化目前(2021.03)支持以下语言:
JavaScript (including experimental features)、JSX、Angular、Vue、Flow、TypeScript、CSS, Less, and SCSS、HTML、JSON、GraphQL、Markdown, including GFM and MDX、YAML
Prettier 会生成更漂亮的代码,并且不会影响AST。与Linters 不同,Prettier 仅注重代码格式,而 Linters 会关注代码bug。
使用
安装
1 | npm install --save-dev --save-exact prettier |
或yarn
1 | yarn add --dev --exact prettier |
配置
然后在项目根目录下创建配置文件.prettierrc.json和忽略配置文件.prettierignore。
常见的配置如
1 | { |
.prettierignore的配置与.gitignore类似,如
1 | build |
需要注意的是,.prettierignore会基于.gitignore和.eslintignore(如果有的话)。
如果您的项目尚无法格式化,例如HTML文件,请添加
*.html。
格式化
执行
1 | npx prettier --write . |
或yarn
1 | yarn prettier --write . |
如果您具有CI设置,请作为一部分运行以下命令,以确保每个人都运行Prettier。这样可以避免合并冲突和其他协作问题。
1 | prettier --check . |
--check类似--write,但check不会重写文件。
编辑器接入
官方文档:https://prettier.io/docs/en/editors.html
如 vscode插件:prettier-vscode
安装后使用:
- 1.编辑器命令行:
1 | 1. CMD + Shift + P -> Format Document |
- 2.保存时执行
editor.formatOnSave:
1 | // Set the default |
其中格式支持:
1 | javascript |
整合 Linters
Linters 通常不仅包含代码质量规则,而且还包含样式规则。使用Prettier时,大多数样式规则都是不必要的,但更糟糕的是,它们可能与Prettier冲突!
我们可以通过使用以下插件,避免冲突:
首先,我们有一些插件,可以让您像对待Linters 规则一样运行Prettier:
我们提供了可以更漂亮地运行然后立即运行的工具,例如文件上的eslint --fix。
.eslintrc.json修改:
1 | { |
ESlint 与 Prettier 的合作关系: 由于 ESlint 自身自动格式化功能不够完善,Prettier 代替了 ESlint 格式化能力,利用了 ESlint 的检测和提示
pre-commit
在提交之前,这可以通过git add重新格式化标记为“暂存”的文件。
lint-staged
当您想与Prettier一起使用其他代码质量工具(例如ESLint,Stylelint等)或需要支持部分暂存文件(git add –patch)时,此功能很有用。
在继续之前,请确保已安装Prettier并在您的devDependencies中。
1 | npx mrm lint-staged |
这将安装husky 和 lint-staged,并且运行时是lint-staged,然后将配置添加到项目的package.json中,该配置将在预先提交的挂钩中自动格式化支持的文件。
pretty-quick
安装husky,
1 | npm install --save-dev pretty-quick husky |
然后在package.json中设置:
1 | { |
pre-commit
设置.pre-commit-config.yaml文件:
1 | - repo: https://github.com/pre-commit/mirrors-prettier |
git-format-staged
1 | npm install --save-dev git-format-staged husky |
配置package.json:
1 | { |
Shell script
或者,您可以将此脚本另存为.git/hooks/pre-commit并授予其执行权限:
1 | #!/bin/sh |
如果git报告您提交的美化文件在提交后仍被修改,则您可能需要添加提交后脚本来更新git的索引。
在.git/hooks/post-commit中添加以下内容:
1 |
|
Author
My name is Micheal Wayne and this is my blog.
I am a front-end software engineer.
Contact: michealwayne@163.com