赞
踩
目录
借用官方的话来说,Prettier 是一个固执的代码格式化程序,它删除所有原始样式*并确保所有输出的代码符合一致的样式。
所以,Prettier 是一个代码格式化工具,可以在多人协作开发中能让每一行代码保持一致的风格,Prettier 是一种代码风格指南,Prettier 提供了很多的配置项和API,你可以有选择的配置你想要的代码风格,并使用 Prettier 来进行统一格式处理。
Prettier 支持:
指令:
- npm install --save-dev --save-exact prettier
-
- yarn add --dev --exact prettier
创建配置文件,指令:
echo {}> .prettierrc.js
运行命令会生成 .prettierrc.js 文件,如果你的编辑器是 vscode ,那么他会自动读取 .prettierrc.js 文件中的配置,并以此配置来格式化你的代码,具体的配置规则如下:
- module.exports = {
- // 每行最多字符数,默认80
- printWidth: 130,
- // 用制表符(tab)不是空格缩进行
- // 如果为true,则取编辑器tabSize值
- // 安装editorconfig编辑器插件并配置文件,则取 editorConfig 文件中设置的值
- // 具体取indent_size或者tab_width,依据indent_style值来决定
- // 如果为false,则取值为tabWidth值,但是有问题,经常需要重启编辑器才生效
- useTabs: false,
- // 指定每个缩进级别的空格数
- tabWidth: 4,
- // 在每条语句的末尾添加一个分号 默认true
- semi: false,
- // 使用单引号代替双引号 默认false
- singleQuote: true,
- // 引用对象中的属性,对象key添加引号方式 as-needed仅在需要时在对象属性周围添加引号
- quoteProps: 'as-needed',
- // 有效的尾随逗号 es5 中有效的尾随逗号(默认) | none 没有逗号 | all 尾随逗号
- trailingComma: 'none',
- // 在对象文字中的括号之间打印空格
- bracketSpacing: true,
- // 决定html元素首元素右侧尖括号(>)是否换行,不包含自闭合元素 false另起一行
- bracketSameLine: false,
- // 箭头函数参数周围包含括号 always有括号(默认) avoid无括号
- arrowParens: 'always',
-
- // 规定使用哪一种解析器
- // Prettier 会自动从输入文件路径推断解析器,因此您不必更改此设置
- // parser: require("./my-parser")
-
- // 是否缩进Vue文件中的<script>和<style>标签,
- // 不缩进可以保存缩进级别,但可能破坏编辑器中的代码折叠(默认false)
- vueIndentScriptAndStyle: true,
- // 行尾形式 lf|crlf|cr|auto 默认lf
- endOfLine: 'auto',
- }
常用的配置如上所示,更多细节配置及使用使用方法参见 Prettier 官方文档
同样,你也可以定义不需要被格式化的文件集合,创建 .prettierignore 文件,配置你不需要格式化的文件,具体的配置规则同 .gitignore 文件,因为 .prettierignore 基于 .gitignore 和 .eslintignore,如:
- /dist/*
- .local
- .output.js
- /node_modules/**
- **/*.svg
- **/*.sh
- /public/*
到此 Prettier 配置完毕,更多详细配置请参见官方文档。
如果你同时使用 ESLint,请安装 eslint-config-prettier 以使 ESLint 和 Prettier 相互配合。它关闭所有不必要的或可能与 Prettier 冲突的 ESLint 规则。
指令方式:
- // 格式化所有文件
- npx prettier --write .
-
- // 格式化app目录下的所有文件
- prettier --write app/
配合编辑器自动运行:
在vscode中,首先你应该安装 Prettier 插件,Prettier - Code formatter 插件。
其次,应该定义编辑器的默认格式化程序,如下:
- // 为了确保这个扩展被其他你可能已经安装的扩展使用,确保将它设置为你的VS Code设置中的默认格式化器
- // 此设置可以针对所有语言或者特定语言进行设置
-
- // 设置编辑器默认格式化器
- // 注:设置编辑器默认格式化使用prettier后不影响eslint的正常使用
- "editor.defaultFormatter": "esbenp.prettier-vscode",
-
- // 设定特定语言
- "[vue]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- },
- "[javascript]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- }
如果您想在特定语言上禁用 Prettier,您可以创建一个.prettierignore
文件,也可以使用 VS Code 的editor.defaultFormatter
设置。
- // 对除 Javascript 之外的所有语言使用 Prettier
- {
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "[javascript]": {
- "editor.defaultFormatter": "<another formatter>"
- }
- }
- // 仅将 Prettier 用于 Javascript
- {
- "editor.defaultFormatter": "<another formatter>",
- "[javascript]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- // 配置javascript(某一个特定语言的配置) 保存自动格式化 --示例配置
- // "editor.formatOnSave": false,
- }
- }
配置编辑器在保存的时候格式化文件:
- // prettier与ESLint不同的一点就在于prettier需要启用编辑器保存自动格式化功能才可用
- "editor.formatOnSave": true,
接下来就可以正常使用 Prettier 来格式化你的代码了。
更多编辑器使用配置,代码格式配置请查阅官方文档。
如果你不知道什么是editorConfig,或者不知道怎么用,请看EditorConfig 使用详解。
editorconfig 和 prettier 其实是相辅相成的,是互不矛盾的,共同协作来格式化代码。
editorConfig 中 indent_style 控制的是:编辑器使用制表符(tab)缩进,还是空格(space)缩进,控制编辑器的缩进风格。
prettier 中的useTabs 控制的是:是否使用制表符缩进,而不使用空格。
如果使用制表符缩进,即 useTabs 值为 true,如果配置了editorconfig 文件,并安装editorconfig 插件,则编辑器缩进距离取值为 editorconfig 文件配置的值。如果 indent_style = space,则先取 indent_size 的值,如果没有则取 tab_width 的值;如果 indent_style = tab,则先取 tab_width 的值,如果没有则取 indent_size 的值。如果 useTabs 值为 false,则取 prettier 文件中 tabWidth 的值。
如果没有安装editorconfig 插件,则 useTabs 为 true,取值为编辑器 tabSize 值,如果 useTabs 为 false,取值为 tab_width 值。
优先级说明:
editorConfig 的优先级高于编辑器设置的值,前提是编辑器安装了EditorConfig插件。
prettier 中 useTabs 的优先级高于 editorConfig 中的 indent_style。
prettier 与 ESLint/TSLint/stylelint 等相比如何?
Linter 有两类规则:
例如:max-len、no-mixed-spaces-and-tabs、keyword-spacing、comma-style等。
Prettier 减轻了对这一整类规则的需求!Prettier 将以一致的方式从头开始重新打印整个程序,因此程序员不可能再在那里犯错
例如:no-unused-vars , no-extra-bind , no-implicit-globals , prefer-promise-reject-errors等。
Prettier 对这些规则没有任何帮助。它们也是 linter 提供的最重要的工具,因为它们很可能会捕获您代码中的真正错误!
所以,可以使用Prettier 进行格式化并使用linter来捕获错误。
推荐文章:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。