白话 Prettier

格式化代码,这个需求不论在前端还是后端都太常见了。格式化舒服,写代码都利索些。最开始我是在 Sublime Text 写代码,并用 HTML-CSS-JS Prettify 来格式化代码。但是后来随着项目中开始使用 **Vue React ** 框架和 SCSS 预处理器,不得不开始装各个框架的格式化插件。最开始不觉得繁琐,但是~ 切换电脑或重装软件时,繁琐的操作特别上头。
偶然一次新建deme,发现 vue-cli 初始化项目时,有个选项是 eslint + prettier ,于是新大门打开了 ^ _ ^

先抛出为啥推荐 prettier,如果你编码在前端,并且常常需要在以下的语言或框架中作战

那么使用 prettier 后,就可以不用再安装针对以上语言或框架的格式化插件了,并且 prettier 格式化的风格统一,让处女座(强迫症)的你,神清气爽~

所以 prettier 是什么? 简单粗暴的回答就是:一款可以格式化多种语言框架的格式化插件 (dei~ 口号像 java 一样,编码一次,四处使用)
知道是啥了,那么开始使用~

以在 Visual Studio Code 使用为例:
首先安装
然后配置

CLI 参数: 在命令行里手动输入的参数
配置参数:在配置文件中设置的参数
以下时配置项的直译,如有疑问可以点击前往官网查看原文

Print Width

指定每行的长度

为了便于阅读,建议不要使用超过80个字符。
在代码样式指南中,最大行长规则通常被设置为100或120。然而,编写代码时,并不会达到每行的最大列数。开发人员为了可读性,经常使用空白处来打断长行。在实际操作中,平均行长往往会远远低于最大行数。
Prettier 的 printWidth 选项的工作方式不一样。它不是硬性的允许行长上限。它是一种告诉 Prettier 你想要的行长的方法。Prettier会制作较短和较长的行数,但一般会努力满足指定的 printWidth。
记住,计算机是笨的。你需要明确地告诉它们该怎么做,而人类可以做出自己的判断,例如何时断行。
换句话说,不要试图把 printWidth 当作 ESLint 的 max-len 来使用,它们是不一样的。max-len 只说了允许的最大行长,但没有说一般的首选长度,而这正是 printWidth 所指定的。

默认值 CLI 参数 配置参数
80 --print-width <int> printWidth: <int>

Tab Width

指定缩进用几个空格数。

默认值 CLI 参数 配置参数
2 --tab-width <int> tabWidth: <int>

Tabs

用tab代替空格,进行缩进

默认值 CLI 参数 配置参数
false --use-tabs useTabs: <bool>

Semicolons

行尾自动加上分号

默认值 CLI 参数 配置参数
true --no-semi semi: <bool>

Quotes

用单引号代替双引号

默认值 CLI 参数 配置参数
false --single-quote singleQuote: <bool>

Quote Props

对象里的key是否用引号包裹。

  • "as-needed" - 仅在须要时增加引号.
  • "consistent" - 如一个属性值须要引号,则所有属性包裹引号.
  • "preserve" - Respect the input use of quotes in object properties.
默认值 CLI 参数 配置参数
80 --quote-props <as-needed|consistent|preserve> quoteProps: "<as-needed|consistent|preserve>"
// --quote-props=as-needed
const headers = {
  accept: 'application/json',
  'content-type': 'application/json',
};

// --quote-props=consistent
const headers = {
  'accept': 'application/json',
  'content-type': 'application/json',
};

JSX Quotes

在JSX里用单引号代替双引号

默认值 CLI 参数 配置参数
false --jsx-single-quote jsxSingleQuote: <bool>

Trailing Commas

自 v2.0.0版本起,默认值由 none 调整为 es5
多行情况下,在末尾增加逗号

默认值 CLI 参数 配置参数
es5 --trailing-comma <es5|none|all> trailingComma: "<es5|none|all>"

Bracket Spacing

对象字面量增加空格
可用选项

  • true - 示例结果: { foo: bar }.
  • false - 示例结果: {foo: bar}
默认值 CLI 参数 配置参数
true --no-bracket-spacing bracketSpacing: <bool>

JSX Brackets

在JSX里多行元素的最后一行使用 > 闭合元素,而不是新开一行单独闭合(不适用于自闭合元素)

默认值 CLI 参数 配置参数
false --jsx-bracket-same-line jsxBracketSameLine: <bool>
<!--配置设为  true 的 示例结果-->
<button
  className="prettier-class"
  id="prettier-id"
  onClick={this.handleClick}>
  Click Here
</button>

<!--配置设为  false 的 示例结果-->
<button
  className="prettier-class"
  id="prettier-id"
  onClick={this.handleClick}
>
  Click Here
</button>

Arrow Function Parentheses

箭头函数的单参数是否用括号包裹

  • "always" - 保证括号包裹. 例子: (x) => x
  • "avoid" - 单参数时无括号包裹. 例子: x => x
默认值 CLI 参数 配置参数
"always" --arrow-parens <always|avoid> arrowParens: "<always|avoid>"

Range

默认值 CLI 参数 配置参数
80 --print-width <int> printWidth: <int>

Parser

默认值 CLI 参数 配置参数
80 --print-width <int> printWidth: <int>

File Path

默认值 CLI 参数 配置参数
80 --print-width <int> printWidth: <int>

Require Pragma

默认值 CLI 参数 配置参数
80 --print-width <int> printWidth: <int>

Insert Pragma

默认值 CLI 参数 配置参数
80 --print-width <int> printWidth: <int>

Prose Wrap

默认值 CLI 参数 配置参数
80 --print-width <int> printWidth: <int>

HTML Whitespace Sensitivity

指定HTML对空格的敏感度,以处理空格

默认值 CLI 参数 配置参数
"css" --html-whitespace-sensitivity <css|strict|ignore> htmlWhitespaceSensitivity: "<css|strict|ignore>"

Vue files script and style tags indentation

是否对Vue文件中<script>和<style>标签内的代码进行缩进。有些人(比如Vue的创建者)不缩进以节省缩进级别,但这可能会破坏你编辑器中的代码折叠。

  • "false" - 不对 Vue文件中<script>和<style>标签内的代码进行缩进
  • "true" - 对 Vue文件中<script>和<style>标签内的代码进行缩进
默认值 CLI 参数 配置参数
false --vue-indent-script-and-style vueIndentScriptAndStyle: <bool>

End of Line

结尾换行符

  • "lf" – Line Feed only (\n), 常用于 Linux , macOS
  • "crlf" - Carriage Return + Line Feed characters (\r\n), 常用于 Windows
  • "cr" - Carriage Return character only (\r), MacIntosh操作系统(即早期的Mac操作系统),现在很少用了
  • "auto" - Maintain existing line endings (mixed values within one file are normalised by looking at what’s used after the first line)
默认值 CLI 参数 配置参数
"lf" --end-of-line <lf|crlf|cr|auto> endOfLine: "<lf|crlf|cr|auto>"
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容