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

背景

在开发前端项目时,每个人的开发习惯不同,用的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,
    // 不需要写文件开头的 @prettier
    requirePragma: false,
    // 不需要自动在文件开头插入 @prettier
    insertPragma: false,
    // 使用默认的折行标准
    proseWrap: 'preserve',
    // 根据显示样式决定 html 要不要折行
    htmlWhitespaceSensitivity: 'css',
    // 换行符使用 lf
    endOfLine: 'lf'
};

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


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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XeonYu

码字不易,鼓励随意。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值