背景

在开发前端项目时,每个人的开发习惯不同,用的IDE也不同,有的人喜欢用VSCode,有的人喜欢用Webstorm,而各个编译器默认的格式化规则有不一致,这就导致了不同IDE格式化出来的代码是不一样的。

甚至有些人不喜欢格式化代码,导致代码看起来会比较乱,作为有点强迫症的我看着实在是很不习惯,一般我上手代码的第一件事就是习惯格式化一下。

当多个团队一起开发同一个项目时,会涉及到分支之间代码合并的问题,如果没有一个统一的代码格式化规则,那么,合并代码将会非常麻烦,会出现很多不必要的合并工作。

所以,统一格式化代码的规则以及养成良好的开发习惯是很有必要的。

使用 Prettier 统一格式化代码规则

首先给出 Prettier 的官网,官网文档很详细。
这里我根据步骤做个记录

以Angular项目为例,用法如下:

首先安装 Prettier

npm install --save-dev --save-exact prettier

安装完成后会在package.json文件中的devDependencies中自动加入依赖

其实到这一步我们已经可以使用 Prettier 进行格式化代码了。
但是IED可能会跟 Prettier 冲突,所以需要调整一下IDE的设置。
以Webstorm为例,打开设置,找到Pretter,勾选保存和格式化。

这样一来我们就可以在保存文件的时候自动使用格式化,并且使用快捷键对代码格式化时也会使用Prettier来格式化代码。

以上我们使用的是默认的规则去格式化的代码。
我们还可以自定义格式化的规则

首先我们在项目根目录创建两个文件
分别为 .prettierrc.prettierignore
如下图

  • .prettierrc 文件用来配置格式化规则
  • .prettierignore 用来配置哪些文件不需要被格式化

官网提供了一个在线配置的网页,文章末尾也有一个写好的配置,没什么也别要求可以直接复制那个配置即可。

https://prettier.io/playground/

如下

我们可以自己选择配置,然就copy粘贴到 .prettierrc 文件中,Prettier就会优先以该文件中的规则为准

假如你的项目是中途才添加prettier的话。可以直接运行

npx prettier --write .

去自动格式化你原有的代码,非常方便。

这样一来,统一代码格式化的问题解决了。

tslint检查过于严格,开发时提示红线也别多

但是还有另外一个问题,我们在使用TypeScript开发时,默认的tslint对代码的检查是很严格的,我们随便写点代码都会提示很多红线,这就导致了很多人在开发过程中直接禁用了 tslint ,这样一来,开发出来的代码质量一定不会太高,另外 Prettiertslint 一起使用也会产生冲突。
所以,我们需要解决一下 Prettiertslint 一起使用时的问题。

首先我们要解决的就是默认tslint 检查过于严格的问题,我们创建项目后默认会生成一个 tslint.json 文件,这个文件就是配置了tslint的检查规则。

我们只需要改变这个文件的配置即可。
推荐一个腾讯开源项目的一个配置,地址如下:

https://github.com/AlloyTeam/tslint-config-alloy/blob/master/index.js

我们可以直接复制来用即可。如果我们有个性化的配置,直接更改该文件,备注也都很详细。

解决 Prettier 和 tslint 冲突

还是使用腾讯这个开源项目,地址如下,文档已经非常详细了,照做即可

tslint-config-alloy

大概步骤如下:

1.首先安装tslint-config-alloy 相关依赖:

npm install --save-dev tslint typescript tslint-config-alloy

2.再安装 prettier 和 tslint-config-prettier

npm install --save-dev prettier tslint-config-prettier

3.为 tslint.config 的 extends 添加 tslint-config-prettier

{"extends": ["tslint-config-alloy", "tslint-config-prettier"],"linterOptions": {"exclude": ["**/node_modules/**"]},"rules": {// 这里填入你的项目需要的个性化配置,比如://// // 一个缩进必须用两个空格替代// // @has-fixer 可自动修复// // @prettier 可交由 prettier 控制// "indent": [true, "spaces", 2]}
}

Prettier 的配置文件 prettier.config.js 可以参考这个

// prettier.config.js or .prettierrc.js
module.exports = {// 一行最多 100 字符printWidth: 100,// 使用 4 个空格缩进tabWidth: 4,// 不使用缩进符,而使用空格useTabs: false,// 行尾需要有分号semi: true,// 使用单引号singleQuote: true,// jsx 不使用单引号,而使用双引号jsxSingleQuote: false,// 末尾不需要逗号trailingComma: 'none',// 大括号内的首尾需要空格bracketSpacing: true,// jsx 标签的反尖括号需要换行jsxBracketSameLine: false,// 箭头函数,只有一个参数的时候,也需要括号arrowParens: 'always',// 每个文件格式化的范围是文件的全部内容rangeStart: 0,rangeEnd: Infinity,// 不需要写文件开头的 @prettierrequirePragma: false,// 不需要自动在文件开头插入 @prettierinsertPragma: false,// 使用默认的折行标准proseWrap: 'preserve',// 根据显示样式决定 html 要不要折行htmlWhitespaceSensitivity: 'css',// 换行符使用 lfendOfLine: 'lf'
};

好了,这样一来,我们只需要把配置配好,让各位开发人员安装一下依赖,配置一下开发工具,就OK了


如果你觉得本文对你有帮助,麻烦动动手指顶一下,可以帮助到更多的开发者,如果文中有什么错误的地方,还望指正,转载请注明转自喻志强的博客 ,谢谢!

使用Prettier配合TsLint/Eslint 统一前端代码格式化规则,保证代码质量相关推荐

  1. 前端CSS代码格式化、JavaScript代码格式化函数

    CSS代码格式化 format = (s) =>s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1").replace(/;\s*;/g, &quo ...

  2. html代码格式化vscode,vscode 代码格式化

    最近开发Vue项目,由于前面的前端开发离职,写的代码混乱,没有统一的格式,于是想搞一套前端统一格式化的配置,方便以后代码查看,git提交等. 然后我就查阅资料写了各种配置项 { "explo ...

  3. vscode代码格式化、vetur代码格式化取消末尾添加逗号

    1.在vscode编辑器中插件应用里找到vetur并安装 2.点击卸载旁边的设置按钮 -> 进入 扩展设置界面 3. 在代码块区 底部找到 在settings.json中编辑 4. 找到这个字段 ...

  4. vscode解决代码格式化换行,代码混乱

    1.打开vscode -->首选项-->设置-->用户中找到Vetur-->在settings.json中编辑 2.添加以下代码 "typescript.valida ...

  5. 使用ESLint+Prettier来统一前端代码风格

    Prettier 简单使用 ESLint 与 Prettier配合使用 首先肯定是需要安装 prettier ,并且你的项目中已经使用了 ESLint ,有 eslintrc.js 配置文件. npm ...

  6. eslint规范_规范统一前端代码风格

    背景 众所周知,前端项目的代码质量和代码格式的校验是不可或缺的.很早之前在一个人开发的时候,脚手架生成vue项目的时候都没有打开过eslint,后面有位大佬加入,给boss说,加了个插件(eslint ...

  7. 统一自定义idea和eclipse代码格式化和注释格式化总结

    公司统一规范代码格式化和注释规范化,在此统一整理了idea和eclipse的配置,用于统一管理.下面逐一介绍两个IDE平台的相关配置和用法. 1.Eclipse平台的代码格式化 eclipse的代码格 ...

  8. dotnet 基于 dotnet format 的 GitHub Action 自动代码格式化机器人

    是不是大家也会觉得代码审查里面审查代码格式化问题是无意义的,但是不审查又觉得过不去?是否有个专门的工具人,用来协助修复代码格式化的问题?本文来安利大家一个特别好用的方法,使用 dotnet 完全开源的 ...

  9. 代码格式化脚本CodeFormat

    没学过VBSript,但为了格式化自己要用的代码,找来找去没找到合适的,勉强作了一个.用法:将下面代码存成一个".DSM"后缀的文件,用VC6装载这个宏,打开任一C,C++代码文件 ...

最新文章

  1. 不要光仅仅知道ipconfig了,你out了
  2. 【转】Eclipse下编写C++程序——CDT环境搭建
  3. how does iv_included_delete work
  4. delphi基本语法
  5. 【LeetCode笔记】23.合并K个升序列表(Java、分治、链表)
  6. python断网还能用吗_Python依赖包迁移到断网环境操作
  7. mongodb golang 批量更新_Mongodb读取数据缓慢问题-Sparkamp;Mongodb
  8. 中文宾州树库标记含义
  9. 良好的XHTML规则
  10. OpenCV-人像—酷感冷艳滤镜
  11. 折线图_手把手教你用ECharts画折线图
  12. 【CCCC】L2-027 名人堂与代金券 (25分),模拟水题
  13. 【bzoj1593-预定旅馆】线段树维护连续区间
  14. 如何在 Codeforces 上出题?
  15. 如何用WPS表格生成拟合曲线
  16. Spring Cloud之openfeign 处理服务平滑上下线
  17. 移动硬盘位置不可用无法访问函数不正确修复方法?
  18. 用DIV+CSS技术设计的网页与实现制作【体育文化】dreamweaver学生网页设计
  19. socket 套接字通信研究与讨论
  20. Samara SAU ACM ICPC Quarterfinal Qualification Contest 2012

热门文章

  1. pmp低于预算 符合预算_不(仅)满足预算
  2. 天津铁路工程投资控制系统-原来的文件打不开了,显示数据库错误
  3. 键盘摄影:今天老李是一名动物摄影师
  4. Python自动化操作PPT看这一篇就够了
  5. 录像服务器文件检索,一种录像检索定位方法技术
  6. 计算机cad比例尺1 150,CAD比例如何使1:150的图能够放进1: – 手机爱问
  7. PMP认证考试练习题及参考答案(一)
  8. Latex排版中遇到的难点(以Elsevier为例)
  9. Origin数字化(Digitize)插件
  10. 30岁html5,盘点适合30岁改行的5个职业,简单易上手!