【Prettier】代码格式化工具Prettier的使用和配置介绍

前言

前段时间,因为项目的prettier的配置和eslint格式检查有些冲突,在其prettier官网和百度了一些配置相关的资料,在此做一些总结,以备不时之需。
Prettier官网

Prettier

Prettier 是一种前端代码格式化工具,支持javascript、jsx、typescript、css,less和scss、html、vue、angular、json、markdown等多种前端技术语言格式化。
使用prettier的原因有很多,我认为大部分是因为它可以将项目代码格式统一,还有格式化后的代码较美观和易于理解。

使用 Prettier

vscode 使用

要充分利用 Prettier,建议在编辑器中运行它。在vscode的扩展中可以直接查找prettier插件。
在这里插入图片描述
安装成功后,在你打开支持的文件时,下方文件信息状态栏会有prettier标致:
在这里插入图片描述
双击它或者直接在输出命令窗口那里查看prettier的日志信息:
在这里插入图片描述
从日志这里可以看出,它是优先使用项目中的prettier配置的。
另外,一般你下载代码格式化插件,都是搭配vscode的文件自动保存格式的(这样方便),但是注意,这个自动保存格式化使用的是文件的默认格式化配置。

有的时候你发现prettier配置保存时格式化规则不起作用,可能就是默认格式化配置没切换到prettier。所以记得将格式化的默认配置修改为prettier。
在这里插入图片描述
开启格式化自动保存。
在这里插入图片描述
修改prettier插件配置,设置-》扩展-》prettier 即可改变配置:
在这里插入图片描述

设置好后,就可以使用prettier格式化代码了。

项目中使用

如果你想使用prettier,建议项目中一定要安装prettier和统一好格式化规则。
首先下载prettier依赖,为你的项目添加格式化依赖。例如:

npm install --save-dev  prettier

然后,添加prettier配置文件。配置文件写法有点多,我选择以 JSON 或 YAML 编写的 .prettierrc 文件。

多种配置文件风格可参考:prettier-configuration File

.prettierrc文件json:

{"experimentalTernaries": false,"printWidth": 80,"tabWidth": 2,"useTabs": false,"semi": true,"singleQuote": false,"quoteProps": "as-needed","jsxSingleQuote": false,"trailingComma": "all","bracketSpacing": true,"bracketSameLine": false,"arrowParens": "always","rangeStart": 0,"proseWrap": "preserve","htmlWhitespaceSensitivity": "css","vueIndentScriptAndStyle": false,"endOfLine": "lf","embeddedLanguageFormatting": "auto","singleAttributePerLine": false,"plugins": []
}

在这里插入图片描述
默认情况下,Prettier 会忽略版本控制系统目录(“.git”、“.sl”、“.svn “和”.hg”)和 node_modules 中的文件(除非指定了 CLI 选项 --with-node-modules )。如果".gitignore "文件存在于运行 Prettier 的同一目录中,Prettier 也会遵循该文件中指定的规则。

**/.git
**/.svn
**/.hg
**/node_modules

另外,要排除指定的格式化文件,请在项目根目录下创建 .prettierignore 文件。.prettierignore 使用 gitignore 语法。

格式该目录及子目录下的文件:

npx prettier . --write

检查目录及子目录文件格式化情况:

npx prettier . --check

npx 随 npm 提供,可让你运行本地安装的工具。在执行命令前记得先安装prettier依赖包,不然npx会下载最新版的prettier格式化代码。

Prettier 配置

简单介绍下prettier的格式化配置。
建议使用.prettierrc配置,虽然它不能写注释,但优先级比较高,不容易被覆盖。

export default {//  三元符 ?experimentalTernaries: false,//  单引号singleQuote: true,trailingComma: 'all',endOfLine: 'auto',bracketSpacing: true,
};

Experimental Ternaries 三元符

默认为false。

//  三元符 ?experimentalTernaries: false,

参数:

  • true ——三元符在条件后加上问号。
  • false—— 默认值,保留三元组的默认行为;将问号与结果保留在同一行。

在 prettier 的新三元格式成为默认行为之前,请先试用一下。

在这里插入图片描述

Print Width 一行代码宽度

指定编辑器换行的行长。默认80,上图格式化后就被换行了。

//  行打印长度printWidth: 80,

在 .editorconfig 文件中设置 max_line_length 将配置 Prettier 的打印宽度,除非被覆盖。

(如果在格式化 Markdown 时不想换行,可以设置 Prose Wrap 选项来禁用)。

Tab Width Tab缩进宽度

指定每个缩进级的空格数。默认一个Tab制表符两个空格。

 //  制表符空格数,默认2tabWidth: 2,

在 .editorconfig 文件中设置 indent_size 或 tab_width 将配置 Prettier 的制表符宽度,除非被覆盖。
在这里插入图片描述

Tabs 制表符

用制表符代替空格缩进行间距。

  //  用制表符代替空格缩进行间距。useTab: true,

在 .editorconfig 文件中设置 indent_style 将配置 Prettier 的制表符用法,除非被覆盖。

(制表符将用于缩进,但 Prettier 会使用空格对齐,例如在三元组中。这种行为被称为 SmartTabs)。

Semicolons 行尾分号

在语句末尾打印分号。默认值为true
参数:

  • true —— 在每条语句末尾加上分号。
  • false —— 只在有可能出错的地方行尾添加分号。
//  行尾分号semi:true,

Quotes 引号

使用单引号而不是双引号。默认false。jsx不受此影响。

 //  单引号singleQuote: false,

Quote Props 属性的引号

在引用对象中的属性时进行更改。默认值为 as-needed。
参数:

  • as-needed —— 仅在需要时在对象属性前加上引号。(如果它判断不需要引号,则会把你自己加的引号去掉。)
  • consistent —— 如果对象中至少有一个属性需要引号,则引用所有属性。(只要有一个加,其他属性都加)
  • preserve——尊重对象属性中引号的输入使用。(你想加就加,它不改你的)
"quoteProps": "as-needed",

consistent 效果:
在这里插入图片描述

JSX Quotes JSX的引号

在 JSX 中使用单引号而不是双引号。默认值为false。

Trailing Commas 尾部逗号

在多行逗号分隔的语法结构中尽可能打印尾逗号,默认值all。(例如,单行数组永远不会有尾逗号)。
参数:

  • all —— 尽可能使用逗号(包括函数参数和调用)。要运行这种格式的 JavaScript 代码,需要一个支持 ES2017 的引擎(Node.js 8+ 或现代浏览器)或降级编译。这也能在 TypeScript 的类型参数中使用尾部逗号(自 2018 年 1 月发布的 TypeScript 2.7 起支持)。
  • es5 —— ES5 中有效的尾逗号(对象、数组等)。TypeScript 和 Flow 中类型参数中的尾逗号。
  • none—— 无尾逗号。
"trailingComma": "all",

all的情况:
在这里插入图片描述

Bracket Spacing 空格间隔

打印对象字面量中括号之间的空格。默认值为true
参数:
-true —— 开启,示例:{ foo: bar }。
-false—— 关闭,示例:{foo: bar}。

"bracketSpacing": true,

true的情况:
在这里插入图片描述

Bracket Line

将多行 HTML(HTML、JSX、Vue、Angular)元素的 > 放在最后一行的末尾,而不是单独放在下一行(不适用于自关闭元素)。默认值false。

 "bracketSameLine": false,

在这里插入图片描述

Arrow Function Parentheses 箭头函数括号

在唯一的箭头函数参数周围加上括号。默认值always。
参数:

  • always—— 一定要包括括号。例如: (x) => x。
  • avoid—— 尽可能省略括号。例如:x => x。
  "arrowParens": "always"

Range 文件格式化范围

只格式化文件的一个片段

这两个选项可用于格式化以给定字符偏移(分别为包含和不包含)为起点和终点的代码。范围将扩展:

  • 后退至包含所选语句的第一行的起始位置。
  • 向前到所选语句的末尾。

前后由rangeStart和rangeEnd控制,rangeStart默认为0,rangeEnd默认Infinity,在不指定具体末尾值时,不配置rangeEnd即可。

"rangeStart": 0,

Parser 解析器

指定要使用的解析器。

Prettier 会根据输入文件路径自动推断解析器,因此无需更改此设置。

Prose Wrap 折行

默认情况下,Prettier会因为使用了一些折行敏感型的渲染器(如GitHub comment 和 BitBucket)而按照markdown文本样式进行折行。
但在某些情况下,可能只是希望这个文本在编译器或查看器中当屏幕放不下时发生软折行,所以这一参数允许设置为 never。
参数:

  • always—— 当超出print width(上面有这个参数)时就折行。
  • perserve—— 按照原有文本进行折行。
  • never——不折行。

HTML Whitespace Sensitivity 模板留白

默认值css。
为 HTML、Vue、Angular 和 Handlebars 指定全局空白敏感度。更多信息,请参见空白敏感格式。
参数:

  • “css” - 尊重 CSS 显示属性的默认值。对于 Handlebars,与 strict 相同。
  • “strict” - 所有标记周围的空格(或没有空格)都被视为重要标记。
  • “ignore”- 所有标记周围的空格(或没有空格)都不重要。
 "htmlWhitespaceSensitivity": "css"

在这里插入图片描述

Vue files script and style tags indentation Vue 文件脚本和样式标签缩进

是否缩进 Vue 文件中 <script> 和 <style> 标记内的代码。默认值false。
参数:

  • false - 在 Vue 文件中不缩进脚本和样式标记。
  • true - 在 Vue 文件中缩进脚本和样式标记。
  "vueIndentScriptAndStyle": false

End of Line 行尾换行符

默认值lf。
参数:

  • “lf” - 仅换行符(\n),常见于 Linux 和 macOS 以及 git 仓库中
  • “crlf” - 回车+换行字符(\r/n),常见于 Windows 系统
  • “cr” - 仅回车字符(\r),很少使用
  • “auto” - 保持现有的行结束符(一个文件中的混合值通过查看第一行之后的内容进行规范化处理)
 "endOfLine": "lf"

由于历史原因,文本文件中有两种常见的行结束符。即 \n(或 LF,表示换行)和 \r\n(或 CRLF,表示回车+换行)。前者常见于 Linux 和 macOS,而后者则在 Windows 中很普遍。维基百科上有一些详细的解释。
当不同操作系统的人合作开发一个项目时,很容易在共享的 git 仓库中出现混合行尾。Windows 用户也有可能不小心把以前提交过的文件的行尾从 LF 改成了 CRLF。这样做会产生很大的 git diff,从而使文件的逐行历史记录(git blame)更难查看。
如果您想确保整个 git 仓库在 Prettier 覆盖的文件中只包含 Linux 风格的行结束符:

  1. 确保 Prettier 的 endOfLine 选项设置为 lf(这是自 2.0.0 版起的默认值)
  2. 配置运行 Prettier 的预提交钩子
  3. 使用 --check 标志配置 Prettier 在 CI 管道中运行。如果使用 Travis CI,请在 .travis.yml 中将 autocrlf 选项设置为输入。
  4. 在 repo 的 .gitattributes 文件中添加 * text=auto eol=lf。更改后,您可能需要让 Windows 用户重新克隆您的 repo,以确保 git 在签出时未将 LF 转换为 CRLF。

当使用 \n (LF) 时,所有操作系统中的所有现代文本编辑器都能正确显示行结束符。但是,Windows 的旧版本记事本只能处理 \r\n (CRLF),因此会在视觉上把这些行压成一行。

Embedded Language Formatting 嵌入语言格式

控制 Prettier 是否格式化文件中嵌入的引号代码。默认值auto。
参数:

  • “auto” - 如果 Prettier 能够自动识别嵌入代码,则格式化嵌入代码。
  • “off” - 永远不自动格式化嵌入代码。
"embeddedLanguageFormatting": "auto"

当 Prettier 发现你在另一个文件的字符串中放置了一些它知道如何格式化的代码时,比如在 JavaScript 的标记模板中使用名为 html 的标记,或者在 Markdown 的代码块中,它默认会尝试格式化这些代码。

有时,这种行为并不可取,尤其是在你可能无意将字符串解释为代码的情况下。通过该选项,您可以在默认行为(自动)和完全禁用该功能(关闭)之间进行切换。

Single Attribute Per Line 单行一属性

在 HTML、Vue 和 JSX 中每行强制使用一个属性。默认值false。
参数:

  • false - 每行不执行单一属性。
  • true - 每行执行单一属性。
"singleAttributePerLine": false

plugins 插件

prettier的插件配置。

  "plugins": []

结语

结束了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server数据库 创建表,和表的增删改查

打开SQL Server工具,连接服务器 右击数据库&#xff0c;创建新的数据库 新建表 填写列&#xff0c;我添加了Id,Name,Sex,Age,和class列 右键表刷新一下就有了 我又同时创建了一个Class表 点击新建查询&#xff0c;现在写代码添加数据&#xff0c;也可以操作表来对数据进行添加 …

黑马JavaWeb企业级开发(知识清单DAY2完结)06——Vue(概述、指令、生命周期)

文章目录 前言一、Vue概述1. MVVM前端开发思想2. 框架是什么3. Vue介绍4. Vue快速入门 二、Vue常用指令三、Vue生命周期总结 前言 本篇文章是2023年最新黑马JavaWeb企业级开发&#xff08;知识清单DAY2完结&#xff09;06&#xff1a;Vue&#xff08;概述、指令、生命周期&…

设计模式篇(DesignPattern - 创建型模式)

目录 模式一&#xff1a;单例模式 一、简介 二、种类 1. 饿汉式(静态常量&#xff09; 1.1. 代码 1.2. 优缺点 2. 饿汉式&#xff08;静态代码块&#xff09; 2.1. 代码 2.2. 优缺点 3. 懒汉式(线程不安全) 3.1. 代码 3.2. 优缺点 4. 懒汉式(线程安全&#xff0c;…

GeoStudio2024:地质工程的瑰宝下载安装介绍

引言 青山隐隐&#xff0c;流水潺潺&#xff0c;吾心所向&#xff0c;乃地质之奥秘。GeoStudio2024&#xff0c;如同一卷古籍&#xff0c;蕴藏无尽智慧&#xff0c;助吾等探寻地质之真谛。今以李白之笔&#xff0c;述其妙用&#xff0c;愿与君共赏。 初识GeoStudio2024 初见…

港股震荡中保持乐观,市场信心回来了!

港股上午盘三大指数集体上涨&#xff0c;恒生科技指数一度冲高至1.54%&#xff0c;最终收涨0.98%&#xff0c;恒生指数上涨1.06%。盘面上&#xff0c;大型科技股多数维持上涨行情&#xff0c;百度、腾讯涨超1.5%&#xff0c;快手、美团小幅上涨&#xff0c;阿里巴巴、京东飘绿&…

没及格,我猜这套华为软件测试面试题没几个人能及格

一&#xff0e;填空 1、 系统测试使用&#xff08; C &#xff09;技术, 主要测试被测应用的高级互操作性需求, 而无需考虑被测试应用的内部结构。 A、 单元测试 B、 集成测试 C、 黑盒测试 D、白盒测试 2、单元测试主要的测试技术不包括&#xff08;B &…

layui栅格布局设置列间距不起作用

layui栅格布局支持设置列间距&#xff0c;只需使用预置类layui-col-space*即可。不过实际使用时却始终看不到效果。   根据layui官网文档的说明&#xff0c;只需要在行所在div元素的class属性中增加layui-col-space*即可出现列间距。如下图所示&#xff1a;   但是实际使用…

【数据结构】二叉树的顺序结构,详细介绍堆以及堆的实现,堆排序

目录 1. 二叉树的顺序结构 2. 堆的概念及结构 3. 堆的实现 3.1 堆的结构 3.2 堆的初始化 3.3 堆的插入 3.4 堆的删除 3.5 获取堆顶数据 3.6 堆的判空 3.7 堆的数据个数 3.8 堆的销毁 4. 堆的应用 4.1 堆排序 4.1.1 向下调整建堆的时间复杂度 4.1.2 向上调整建…

GPT-4o System Card is released

GPT-4o System Card is released, including red teaming, frontier risk evaluations, and other key practices for industrial-strength Large Language Models. https://openai.com/index/gpt-4o-system-card/ 报告链接 企业级生成式人工智能LLM大模型技术、算法及案例实战…

MSSQLILABS靶场通关攻略

判断注入 首先用单双引号判断是否存在注入&#xff0c;这里可以看到是单引号 判断是否为 MSSQL 数据库 可以通过以下Payload来探测当前站点是否是MSSQL数据库&#xff0c;正常执行说明后台数据库为MSSQL&#xff1b;也可以根据页面的报错信息来判断数据库 and exists( select…

基于pygame的雷电战机小游戏

import pygame import sys import random# 初始化 Pygame pygame.init()# 设置窗口尺寸 WIDTH, HEIGHT 800, 600 screen pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("雷电战机")# 设置颜色 BLACK (0, 0, 0) RED (255, 0, 0) GREEN (…

对于现货白银走势图分析,不是单纯为了回报

投资白银选对工具和产品真的很重要。如果投资者选择的是实物银条&#xff0c;或者纸白银等相对低效的投资方式&#xff0c;收益只能跟随白银的价格涨跌&#xff0c;比如今年以来&#xff0c;国际白银价格上涨了大概30%&#xff0c;投资者的收益就顶多只有30%&#xff0c;万一买…

[数据集][目标检测]道路积水检测数据集VOC+YOLO格式2699张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2699 标注数量(xml文件个数)&#xff1a;2699 标注数量(txt文件个数)&#xff1a;2699 标注…

redis实战——go-redis的使用与redis基础数据类型的使用场景(一)

一.go-redis的安装与快速开始 这里操作redis数据库&#xff0c;我们选用go-redis这一第三方库来操作&#xff0c;首先是三方库的下载&#xff0c;我们可以执行下面这个命令&#xff1a; go get github.com/redis/go-redis/v9最后我们尝试一下连接本机的redis数据库&#xff0…

如何在Java Maven项目中使用JUnit 5进行测试

如何在Java Maven项目中使用JUnit 5进行测试 1. 简介 JUnit 5概述 JUnit是Java编程语言中最流行的测试框架之一。JUnit 5是JUnit的最新版本&#xff0c;它引入了许多新特性和改进&#xff0c;使得编写和运行测试更加灵活和强大。 为什么选择JUnit 5 JUnit 5不仅提供了更强…

设计模式反模式:UML图示常见误用案例分析

第一章 引言 1.1 设计模式与反模式概述 在软件开发领域&#xff0c;设计模式与反模式是两种截然不同的概念&#xff0c;它们在软件设计过程中起着至关重要的作用。设计模式是经过验证的最佳实践&#xff0c;用于解决在特定上下文中经常出现的问题&#xff0c;从而提高软件的可…

《黑神话·悟空》是用什么编程语言开发的?

最近火爆全球的国产 3A 大作《黑神话悟空》&#xff0c;你玩了吗&#xff1f;没玩没关系&#xff0c;有人就是对游戏不感冒&#xff0c;我找了个宣发片&#xff0c;一起感受下3A大作的视觉冲击&#xff0c;而且还是我们从小听到大&#xff0c;那猴子&#x1f412;的故事。 ‌‌…

【Linux】自动化构建工具makefile

目录 背景 makefile简单编写 .PHONY makefile中常用选项 makefile的自动推导 背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力 ​ ◉ 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…

Scrapy 项目部署Scrapyd

什么是Scrapyd Scrapyd 是一个用来管理和运行 Scrapy 爬虫的服务。它允许用户将 Scrapy 项目部署到服务器上&#xff0c;然后通过一个简单的 API 来启动、停止和监控爬虫的运行。Scrapyd 可以帮助简化爬虫的部署过程&#xff0c;使得用户不必手动在服务器上运行爬虫&#xff0c…

【测试】JMeter从入门到进阶

本文参考 Jmeter自动化测试工具从入门到进阶6小时搞定&#xff0c;适合手工测试同学学习_哔哩哔哩_bilibili JMeter介绍 JMeter 是 Apache 组织使用 Java 开发的一款测试工具&#xff1a; 1、可以用于对服务器、网络或对象模拟巨大的负载 2、通过创建带有断言的脚本来验证程序…