引言

这个需求主要是组内成员用的编辑器不统一,代码风格也各异,所以在修改代码时,如果格式化了代码,在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"],
}
复制代码

这个配置做如下三件事:

  1. 使eslint-plugin-prettier生效
  2. 不符合prettier/prettier的规则,会报错。就是之前截图中的红线。
  3. 使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。

其他的坑

  1. 尾逗号 只有换行时才会有效果: 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后面没有逗号
}复制代码
  1. vscode配置 我的vscode默认使用的是全局安装的eslint,没有使用项目本地的,所以要更新下全局的eslint插件版本。如果小伙伴知道如何配置的,跟我说下哈。

结尾

如果小伙伴有看不明白或者我写的不清楚的,有问题的,欢迎指正~

代码风格统一: 使用husky, prettier, eslint在代码提交时自动格式化,并检查代码。...相关推荐

  1. vite2+eslint+prettier,解决VSCode保存时候自动格式化,导致ESLint报冲突

    背景描述 以前一直用破解版的Webstorm,没有用过VSCode,到新公司后不让用盗版软件了,自己捣鼓了一下VSCode.配置ESLint.Prettier代码格式化的时候,遇到了大坑!!!!保存后 ...

  2. 设置Myeclipse中的代码格式化、及保存时自动格式化

    1.保存时自动格式化代码: 打开eclipse/myeclipse 选择 window-->Preferences-->JAVA-->Editor-->Save Actions ...

  3. Myeclipse学习总结(3)——Myeclipse中的代码格式化、注释模板及保存时自动格式化

    设置Myeclipse中的代码格式化.注释模板及保存时自动格式化 1:设置注释的模板: 下载此模板:  codetemplates.xml

  4. IDEA 设置保存时自动格式化代码 - 英文界面

    近期突然想到在idea上保存代码后能不能自动格式化代码,然后去问了一下度娘,发现基本上都需要下载第三方插件,然后我在设置中搜索了一下,是可以不下载第三方插件就可以实现的,具体步骤如下: 1.点击Fil ...

  5. VSCode代码格式化快捷键及保存时自动格式化

    一.实现vs code中代码格式化快捷键:[Shift]+[Alt]+F 二.实现保存时自动代码格式化: 1)文件 ------.>[首选项]---------->[设置]: 2)搜索em ...

  6. VScode保存代码时自动格式化代码

    一. 安装插件vetur 安装此插件后就可以使用快捷键[shift]+[Alt]+[F]来格式化代码了. 二. 实现保存时自动格式化代码 1)文件 ------.>[首选项]---------- ...

  7. IDEA 设置保存时自动格式化代码 - 中文界面

    近期突然想到在idea上保存代码后能不能自动格式化代码,然后去问了一下度娘,发现基本上都需要下载第三方插件,然后我在设置中搜索了一下,是可以不下载第三方插件就可以实现的,具体步骤如下: 1.点击文件- ...

  8. Go (Golang) 工具之依赖包管理工具goimports | Go语言规范-import规范(导入)排序 |GoLand:设置gofmt与goimports,保存时自动格式化代码

    文章目录 Go (Golang) 工具之依赖包管理工具goimports Go语言规范-import(导入)排序 什么是goimports 安装和使用 Golang 使用goimports unrec ...

  9. vscode如何设置自动保存时自动格式化代码

    Vscode 快速格式化代码: shift+alt+f 也可以设置 当我们 保存页面的时候自动格式化代码: 1)文件 ------.>[首选项]---------->[设置]: 2)搜索e ...

最新文章

  1. 【Qt】通过QtCreator源码学习Qt(十一):Utils::Icon,根据不同主题、不同状态变换图标
  2. 【BZOJ】2734: [HNOI2012]集合选数
  3. q3c 更换q3x 需要重置硬盘吗_轻松拓展你的游戏库 西部数据WD_BLACK D10 游戏专用硬盘评测...
  4. Could not load type 'System.Web.Mvc.ViewPagedynamic' in asp.net mvc2 after publishing the website
  5. RedMine 1.3.3 安装攻略
  6. 《c语言从入门到精通》看书笔记——第1章 C语言的概述
  7. Failed:(13: Permission denied)导致访问浏览器出现Nginx 500 Internal Server Error
  8. spring data jpa 的 in 查询 Specification 实现
  9. DeepID1 分析
  10. linux权限设定的判定,linux中如何通过脚本判定文件的群组权限
  11. pg注释某一段语句不执行_@Autowired的使用:推荐对构造函数进行注释
  12. 量子计算机具有天然的处理能力,新发现:光纤可用于构建具有强大计算与处理能力的超导量子计算机...
  13. B站(云e办)SpringBoot实战练习的Sql文件、前端Vue源码、后端springboot源码
  14. 阿里出品的最新版 Java 开发手册,嵩山版,扫地僧
  15. mk编译报错-提示找不到符号
  16. java接入支付宝api实现支付宝手机扫码登录
  17. SIEBEL应用概述
  18. 留得些许清影,幽香直到人间
  19. android n 状态栏分析,Android N状态栏图标白底问题
  20. word文档图标变成白纸_word图标变了_word图标变成白底方框

热门文章

  1. cpu上干硅脂怎么清理_笔记本电脑散热硅脂的正确涂法
  2. 集合python_python集合访问的方法
  3. hp-ux mysql_HP-UX 安装MySQL
  4. 二开版彩虹易支付全开源10套模板带风控实名系统源码
  5. 新款微信壁纸小程序源码 自动采集小米
  6. 总结 贪心算法_用经典例题轻松帮你搞定贪心算法
  7. Magento: 左栏筛选条件 Select Box / Button / Dropdown List on Layered Navigation
  8. 5 个基于Linux命令行的文件下载和网站浏览工具
  9. 爬虫入门四(多线程爬虫)
  10. 最短路径——Floyd算法HDU Today(hdu2112)