代码风格统一: 使用husky, prettier, eslint在代码提交时自动格式化,并检查代码。...
引言
这个需求主要是组内成员用的编辑器不统一,代码风格也各异,所以在修改代码时,如果格式化了代码,在code review阶段很难分辨修改了的代码。当然,代码风格统一还有其他好处,这里就不不多废话了。
先看效果
源文件
可以看到有很多红线,这个是因为不符合prettier的规则,这种情况下会使用eslint进行报错,就是你看到的红线了。具体如何配置之后再讲。下面来看看提交时的情况。对比上图,可以看到代码已经被格式化了。这时我们再改一改,去掉eslint报的错误。注意HelloWorld()
后故意留个报错,而且我们没有加分号。再次提交。此时的代码变为可以看到,之前HelloWorld()
后的报错没有了,而且分号自动加上去了。这是用了eslint自动修复的功能。
总结下: 在我们提交代码时,先自动帮我们格式化代码,然后使用eslint检查代码,并自动修复错误,在修复不了的时候,报错给我们。并且报错后此次的commit不会提交。
下面看如何配置。
使用的工具
- husky。一个git钩子工具,这里主要用pre-commit钩子。通俗点讲就是husky可以在你commit之前帮你做一些事情。
- prettier。 一个很流行的代码格式化工具,你很容易在编辑器找到实现它的各种插件,像vscode,atom,webstom都可以找到。这里用它在代码提交前做代码格式化。
- eslint。 代码检查工具。eslint也可以负责一部分代码格式检查的工作,但是prettier已经做的很好了,所以我便没用eslint的代码格式检查,只让其负责代码错误检查。
- lint-staged。在你提交的文件中,执行自定义的指令。don’t let ? slip into your codebase. — lint-staged
安装
安装eslint
npm i -D eslint babel-eslint eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react
复制代码
安装prettier
npm install --save-dev prettier eslint-plugin-prettier eslint-config-prettier
复制代码
安装husky,lint-staged
npm i -D husky lint-staged pretty-quick
复制代码
prettier配置
- prettier 代码格式化核心
- eslint-plugin-prettier 插件,可以让
eslint
使用prettier
规则进行检查,并使用--fix选项。像之前的格式不对时,eslint提示的红线。 - eslint-config-prettier 插件,之前说了
eslint
也会检查代码的格式,这个插件就是关闭所有不必要或可能跟prettier
产生冲突的规则。
在eslintrc.json
添加如下配置:
{"extends": ["airbnb", "plugin:prettier/recommended"],
}
复制代码
这个配置做如下三件事:
- 使
eslint-plugin-prettier
生效 - 不符合
prettier/prettier
的规则,会报错。就是之前截图中的红线。 - 使
eslint-config-prettier
生效。就是会覆盖eslint中与prettier冲突的配置。
prettier
配置文件
prittier配置文件支持很多种,具体可以看这里。我使用的是.prettierrrc
格式,因为试过其他格式,但是只有.prettierrrc
,vscode才可以识别。 生成配置可以直接用官网上的try it out,左下角有导出配置。下面这份配置基本上是风格要求的全部了,具体可按照个人爱好进行配置。
{"printWidth": 120, // 一行最大多少字符"tabWidth": 2, // tab占用的字符数"useTabs": false, // 是否使用tab代替空格"semi": true, // 是否每句后都加分号"singleQuote": true, // 是否使用单引号"jsxSingleQuote": false, // jsx是否使用单引号"trailingComma": "all", // 数组尾逗号。"bracketSpacing": false, // {foo: xx}还是{ foo: xx }"jsxBracketSameLine": false, //看官网"arrowParens": "always" //剪头函数参数是否使用()
}
复制代码
eslint配置
直接上配置:
{"extends": ["airbnb", "plugin:prettier/recommended"], // eslint扩展规则"parserOptions": {"ecmaVersion": 7,"sourceType": "module","ecmaFeatures": {"jsx": true}},"parser": "babel-eslint",// 解决ES6 improt会报错"env": { // eg如果不配置browser,window就会被eslint报undefined的错"es6": true,"browser": true,"node": true},"plugins": ["react", "jsx-a11y", "import"],"rules": {"class-methods-use-this": 0,"import/no-named-as-default": 0,"react/jsx-filename-extension": ["error",{"extensions": [".js", ".jsx"]}]}
}
复制代码
husky钩子pre-commit配置
"husky": {"hooks": {"pre-commit": "lint-staged" // pre-commit,提交前的钩子}},"lint-staged": {// 此处可以配置文件夹和文件类型的范围"src/**/*.{jsx,txs,ts,js,json,css,md}": ["prettier --write", // 先使用prettier进行格式化"eslint --fix", // 再使用eslint进行自动修复"git add" // 所有通过的话执行git]},
复制代码
husky会在你提交前,调用pre-commit钩子,执行lint-staged,如果代码不符合prettier配置的规则,会进行格式化;然后再用eslint的规则进行检查,如果有不符合规则且无法自动修复的,就会停止此次提交。如果都通过了就会讲代码添加到stage,然后commit。
其他的坑
- 尾逗号 只有换行时才会有效果:
trailingComma
配置为all
function HelloWorld({greeting = "hello", greeted = '"World"', silent = false, onMouseOver,}) {let noTrailingComma = [a , b,c]
}
复制代码
格式化后为
function HelloWorld({greeting = "hello",greeted = '"World"',silent = false,onMouseOver, // 这里有逗号
}) {let noTrailingComma = [a, b, c]; // 注意这里c后面没有逗号
}复制代码
- vscode配置 我的vscode默认使用的是全局安装的eslint,没有使用项目本地的,所以要更新下全局的eslint插件版本。如果小伙伴知道如何配置的,跟我说下哈。
结尾
如果小伙伴有看不明白或者我写的不清楚的,有问题的,欢迎指正~
代码风格统一: 使用husky, prettier, eslint在代码提交时自动格式化,并检查代码。...相关推荐
- vite2+eslint+prettier,解决VSCode保存时候自动格式化,导致ESLint报冲突
背景描述 以前一直用破解版的Webstorm,没有用过VSCode,到新公司后不让用盗版软件了,自己捣鼓了一下VSCode.配置ESLint.Prettier代码格式化的时候,遇到了大坑!!!!保存后 ...
- 设置Myeclipse中的代码格式化、及保存时自动格式化
1.保存时自动格式化代码: 打开eclipse/myeclipse 选择 window-->Preferences-->JAVA-->Editor-->Save Actions ...
- Myeclipse学习总结(3)——Myeclipse中的代码格式化、注释模板及保存时自动格式化
设置Myeclipse中的代码格式化.注释模板及保存时自动格式化 1:设置注释的模板: 下载此模板: codetemplates.xml
- IDEA 设置保存时自动格式化代码 - 英文界面
近期突然想到在idea上保存代码后能不能自动格式化代码,然后去问了一下度娘,发现基本上都需要下载第三方插件,然后我在设置中搜索了一下,是可以不下载第三方插件就可以实现的,具体步骤如下: 1.点击Fil ...
- VSCode代码格式化快捷键及保存时自动格式化
一.实现vs code中代码格式化快捷键:[Shift]+[Alt]+F 二.实现保存时自动代码格式化: 1)文件 ------.>[首选项]---------->[设置]: 2)搜索em ...
- VScode保存代码时自动格式化代码
一. 安装插件vetur 安装此插件后就可以使用快捷键[shift]+[Alt]+[F]来格式化代码了. 二. 实现保存时自动格式化代码 1)文件 ------.>[首选项]---------- ...
- IDEA 设置保存时自动格式化代码 - 中文界面
近期突然想到在idea上保存代码后能不能自动格式化代码,然后去问了一下度娘,发现基本上都需要下载第三方插件,然后我在设置中搜索了一下,是可以不下载第三方插件就可以实现的,具体步骤如下: 1.点击文件- ...
- Go (Golang) 工具之依赖包管理工具goimports | Go语言规范-import规范(导入)排序 |GoLand:设置gofmt与goimports,保存时自动格式化代码
文章目录 Go (Golang) 工具之依赖包管理工具goimports Go语言规范-import(导入)排序 什么是goimports 安装和使用 Golang 使用goimports unrec ...
- vscode如何设置自动保存时自动格式化代码
Vscode 快速格式化代码: shift+alt+f 也可以设置 当我们 保存页面的时候自动格式化代码: 1)文件 ------.>[首选项]---------->[设置]: 2)搜索e ...
最新文章
- 【Qt】通过QtCreator源码学习Qt(十一):Utils::Icon,根据不同主题、不同状态变换图标
- 【BZOJ】2734: [HNOI2012]集合选数
- q3c 更换q3x 需要重置硬盘吗_轻松拓展你的游戏库 西部数据WD_BLACK D10 游戏专用硬盘评测...
- Could not load type 'System.Web.Mvc.ViewPagedynamic' in asp.net mvc2 after publishing the website
- RedMine 1.3.3 安装攻略
- 《c语言从入门到精通》看书笔记——第1章 C语言的概述
- Failed:(13: Permission denied)导致访问浏览器出现Nginx 500 Internal Server Error
- spring data jpa 的 in 查询 Specification 实现
- DeepID1 分析
- linux权限设定的判定,linux中如何通过脚本判定文件的群组权限
- pg注释某一段语句不执行_@Autowired的使用:推荐对构造函数进行注释
- 量子计算机具有天然的处理能力,新发现:光纤可用于构建具有强大计算与处理能力的超导量子计算机...
- B站(云e办)SpringBoot实战练习的Sql文件、前端Vue源码、后端springboot源码
- 阿里出品的最新版 Java 开发手册,嵩山版,扫地僧
- mk编译报错-提示找不到符号
- java接入支付宝api实现支付宝手机扫码登录
- SIEBEL应用概述
- 留得些许清影,幽香直到人间
- android n 状态栏分析,Android N状态栏图标白底问题
- word文档图标变成白纸_word图标变了_word图标变成白底方框
热门文章
- cpu上干硅脂怎么清理_笔记本电脑散热硅脂的正确涂法
- 集合python_python集合访问的方法
- hp-ux mysql_HP-UX 安装MySQL
- 二开版彩虹易支付全开源10套模板带风控实名系统源码
- 新款微信壁纸小程序源码 自动采集小米
- 总结 贪心算法_用经典例题轻松帮你搞定贪心算法
- Magento: 左栏筛选条件 Select Box / Button / Dropdown List on Layered Navigation
- 5 个基于Linux命令行的文件下载和网站浏览工具
- 爬虫入门四(多线程爬虫)
- 最短路径——Floyd算法HDU Today(hdu2112)