相关文章和阅读顺序
搭建Typescript+React项目模板(1) --- 项目初始化
搭建 Typescript+React 项目模板 (2) --- 提升开发体验
搭建 Typescript+React 项目模板 (3) --- 整理项目和杂项
搭建 Typescript+React 项目模板 (4) --- 项目打包
搭建 Typescript+React 项目模板 (5) --- 团队规范
文章已同步更新到掘金专栏(https://juejin.im/user/5a77c815f265da4e9518bebc/posts)
项目地址
注意
这篇文章的每一步都基于vscode
这款浏览器,如果你使用的不是vscode
,那么就需要自行集成相关插件及其配置。
该文章只是简单介绍各各代码检测的流程,至于配置项则需要读者自行前往对应的lint官网自己查看、配置需要的。
前言
一般在项目中用到typescript作为开发工具的都是大中型项目,这样的项目通常也不会只有一个人进行开发,所以在团队内进行一些代码风格的统一和检测能有效减少各种风格狂野的代码,然后再结合编辑器进行代码的自动格式化就能使得团队代码风格保持一致。
在这块中我们需要做的如下:
- 使用
tslint
做代码检测 - 使用
stylelint
做代码检测 - 添加
npm script
进行检测 - 使用
prettier
进行代码格式化 - 使用
pre-commit
使用tslint
进行代码检测
我们的项目因为大量使用typescript
,所以使用的是tslint
检测工具,如果在你的项目中没有用到typescript
,那么请使用eslint
。
- 首先我们需要在
vscode
中安装插件:
然后在项目中安装npm install -D tslint
。
此外,因为我们有大量的.tsx
文件,所以还需要npm install -D tslint-react
来指定针对.tsx
语法的限制。 - 接着在根目录下新建
tsling.json
文件,该文件用于写tslint
配置文件:
- 在
tslint.json
中写入配置,配置项参考请点击这里:
这份配置项中,上面的extends
是指tslint
的扩展,第一个扩展是稳定且常规的tsling检测标准,第二个则是针对.tsx
文件做的检测。 - 测试一下是否生效:
我们将no-console
改为true
测试一下:
然后在组件中写一个console.log
就可以知道这份配置表已经生效:
使用stylelint
对scss
文件进行检测
上一节针对ts(x)代码进行检测,这节则介绍对scss文件的代码类型进行检测。
- 首先,在vscode安装
stylelint
这个插件,该插件可以对css
、less
、scss
等类型的样式表代码进行格式和样式书写顺序上的检测:
记得还需要npm install -D stylelint
。 - 我们在根目录下创建
.stylelintrc.js
文件,然后安装官方推荐的配置stylelint-config-standard以及针对scss
代码类型检测的插件stylelint-scss:
npm install -D stylelint-config-standard stylelint-scss
- 然后在
.stylelintrc.js
文件中写入配置项:
- 但是这时候针对
scss
代码的检测还是有问题的,它不能识别scss中例如@mixin
、@include
之类的语法:
所以还需要手动写一些规则覆盖掉针对这类语法的检测使其不报错:
添加npm script
进行检测
这一步主要利用tslint
和stylelint
附带的命令行命令检测项目中存在的代码规范问题,然后输出到终端查看:
- 去到
package.json
中,在scripts
中添加如下命令:
这条命令既检查.tsx
文件也检查.scss
文件。 -
然后再终端中输入一次,就能看到报错如下:
然后定位到文件中去修改即可。
使用prettier
进行代码格式化
除了上一节中手动定位并修改不规范的代码外,我们还可以依赖于vscode
的插件来进行符合我们规范的代码格式化,这个插件推荐使用prettier
。
- 首先在
vscode
中安装这个插件:
-
然后去到用户设置表中, 进到工作区设置进行配置,下图是该模板的配置,当然你也可以自行配置需要的设置:
-
回到刚才错误的地方,只要我们一保存就会自动格式化成正确的:
使用pre-commit
在前面的篇幅中,我们有将lint
命令添加进npm script
中,但是这个命令如果要自己去运行我想很多人都会忘记,结果就会导致可能有不符合规范的代码被上传到远端代码仓库中。
这种情况下我们可以做pre-commit
进行代码强制检测,也就是在git commit
之前进行一次代码检测,不符合规范不让commit
。
实现这个功能我们可以安装husky这个插件npm install -D husky
,然后在npm script
中添加命令就好了:
我这里只是简单地添加了代码检测上的操作,也可以添加代码格式化的命令。