softwear 2019-06-27
但是需要知道的是,开发规范不仅仅包含代码格式规范,还有很多内容,这里只是单独说明代码格式化规范而已。
eslint —fix
的加强版)鉴于网上文章说明的比较混乱,这里主要是为了梳理整个流程和思路,然后对比网上的文章重新理解和学习 eslint 和 prettier 和代码检查和代码格式化。
统一团队使用的开发工具(ide 编辑器)
配置 eslint 和 prettier
开发工具可以做很多东西,是开发代码的利器,但是不同的开发工具会有不同的代码提示,代码格式化,代码检查的机制,这样的差异化会对团队代码规范(开发和检查)带来很多问题,所以需要统一。
当然,如果个人不愿意更换自己用惯的开发工具的话,也没关系,只要能够做到跟团队的开发规范保持一致也是可以的,但个人觉得,这样难度比较大,毕竟开发工具和团队的开发规范不那么容易融合。
这里只说明前端业界目前最常用的两种开发工具来做例子,分别是 webstorm 和 vscode。
~webstorm 或者 vscode 分别安装好之后需要安装eslint 插件和 prettier 插件。~
更多配置方式参考:WebStorm Setup · Prettier
根据官方介绍webstorm 分别有2种处理:
如果用IntelliJ IDEA, PhpStorm, PyCharm, and other JetBrains IDEs, 则需要安装prettier插件和 eslint 插件,而webstorm 的话默认会帮你安装上。
官方默认已经集成了 prettier 支持,只需要配置好一个全局的 prettier 模块调用方式就可以使用了(必须配置)。
[image:92501044-1ADD-41CB-BD0C-A08BF017856E-2833-0000064BE8D16DB1/5CC2BD82-B4E3-459A-A96A-8652870832E8.png]
快捷键是:Alt-Shift-Cmd-P on macOS or Alt-Shift-Ctrl-P on Windows and Linux
氪金王的好处,升级快,支持快,免破解,省心省力不省钱!
这个版本有2种情况:
eslint-plugin-prettier
插件和启用eslint 插件配合,这里相当于使用 eslint 模块来驱动 prettier 模块,然后中间驱动则是靠eslint-plugin-prettier
。首先启用 eslint,并且配置 eslint 模块位置,默认会自动读取当前目录的 eslint.rc
配置文件,然后需要进行 npm 安装eslint-plugin-prettier
这个插件,后面再统一说明。
[image:45E71C29-2933-4178-8B54-1624D7BDE6ED-2833-0000080224C7A18F/F82912F6-0F7C-4D89-9A2C-EA1C8CF41469.png]
[image:EB38EB6E-FB83-4C2B-B3FE-005FB45D1B81-2833-00000778833EC282/223C3C42-AE59-4501-9119-E44ACB0C38EE.png]
[image:BE8CDA11-63C4-4661-93BB-146299063BD9-2833-0000077989F51D06/2DE327F9-2274-448E-816A-D53057B4FB6F.png]
上面两种方式的默认快捷键都是Cmd/Ctrl-Shift-A
(在 mac 下是 comm+shift+A
),觉得不舒服,按需修改快捷键即可。
[image:BD12F495-B168-485D-9E1B-CA30E07D4917-2833-000007DCC3947E10/36E1EB4E-769A-456D-B7F4-C1C61FD76086.png]
打开 VSCode 扩展面板并搜索 ESLint 插件 和 prettier 插件,然后点击安装。(prettier 插件没截图,但类似)
[image:478E5E36-1056-4C77-8D98-D009559070CB-2833-000008A49B4C4EFC/D8C1E6E5-619D-48BA-93C8-EBA1091B9FBD.png]
安装完毕之后点击 ~重新加载~ 以激活插件。
vscode 的快捷键:
CMD + Shift + P -> Format Document
或者
CMD + Shift + P -> Format Selection
官网有详细介绍:GitHub - prettier/prettier-vscode: Visual Studio Code extension for Prettier
安装这个模块的意义在于,实际上,整个流程最核心就是这个地方,开发工具虽然支持了这2个模块,但是最终运行是必须要以这2个模块安装好才能使用的。
这是 node 的模块,用 nam 或者 yarn 的方式安装,以下是以 npm 安装为例。
nam -g install eslint eslint-plugin-prettier eslint-config-prettier babel-eslint prettier eslint-plugin-html --save-dev
-g
是因为这些都是全局使用的模块(尤其是 eslint 和 prettier),不用每次重复安装,而且也容易被开发工具找到,当然也可以选择不用-g
,自行处理模块位置。eslint-plugin-prettier 是之前说过,这里重新说明一下:
eslint-config-prettier :
babel-eslint :
eslint-plugin-html:
.vue
文件的代码。eslint 的检查规则是通过配置文件.eslintrc
实现的,但是各家有各家的 eslint 配置文件GitHub - AlloyTeam/eslint-config-alloy: AlloyTeam ESLint 规则:
[image:183FFECA-1463-4847-995C-7968ACB07CDE-2833-00000FC1A80835A6/A9CB9340-A21E-42C9-ADF2-76B4351FA7D2.png]
详细参考网址:
不过这里不纠结用哪一种 eslint 的配置,具体看项目和团队,这里只是说明需要做 eslint 的配置,并且需要做一些说明:
.eslintrc
配置文件需要添加修改地方,主要是为了 prettier插件和eslint-config-prettier 插件和eslint-plugin-prettier插件使用的:
// 原extends: 'eslint:recommended', extends: ['prettier', 'eslint:recommended'], // required to lint *.vue files 使用 html参数 plugins: ['html', 'prettier'],
在 webstorm 下:
.eslintrc
作为配置文件。在 vscode 下:
.eslintrc
作为配置文件。文件 > 首选项 > 设置
打开 vscode 配置文件,然后配置指定使用哪个 eslintrc 文件作为 vscode 的配置文件。[image:21128230-D925-4913-9B21-68C26C371CB6-2833-000010E826578238/162A9A99-B87A-469B-82FD-A570A7352937.png]
[image:BB2B7C90-692F-4731-93DC-D48E5E5F63FD-2833-000010E936A05A4C/6566C009-8837-4BA7-BC56-4F8EEF8AA928.png]
"eslint.options": { "configFile": "E:/git/github/styleguide/eslint/.eslintrc.js" },
.vue
、.ts
或 .tsx
文件,需要在「文件 => 首选项 => 设置」里做如下配置:{ "eslint.validate": [ "javascript", "javascriptreact", "html", "vue", "typescript", "typescriptreact" ] }
prettier 的检查规则是通过配置文件.prettierrc
实现的,不过一般来说,只需要配置少部分规则即可:
{ "printWidth": 100, "singleQuote": true, // 这个地方需要跟 eslint 的规则保持一致 "semi": false // 这个地方需要跟 eslint 的规则保持一致 }
官方有详细的介绍:Configuration File · Prettier
这个配置在 webstorm 下和 vscode 都一样。
对此我个人的理解就是,editorconfig可以协助开发工具在自动格式化或者自动排版或者录入排版的时候进行代码格式化,但是只能支持比较简单的规则,不过也减轻了一部分代码格式化的压力和成本,所以有比没有好,而且最好要有。
// 放在项目根目录的.editorconfig文件 root = true [*] charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true
详细参考:
需要明确一点,代码格式化需要由上而下执行,如果没有强制性压力督促,那么是对抗不了人类的惰性的。
整个代码检查和格式化流程应该规范为如下步骤:
参考文档:
原文转载:梳理前端开发使用 eslint+prettier 检查和格式化代码 | 线上猛如虎,线下怂如鼠(WhyNotBetter)