代码规范化在日益庞大的前端多人协作项目中越来越凸显它的价值,eslint是前端代码规范方案中很优秀的代表。它提供了对句法、错误、代码格式的检测能力。但是使用eslint对于很多开发同学一般并不会那么顺利,它涉及的场景和环境情况很多。
本文描述了eslint的安装、配置和使用,重点描述了其在工程中命令行场景、git hook场景中的使用,还描述了在vscode中如何设置自动提醒和保存时自动eslint格式化。欢迎交流~
安装
npm install eslint -g
安装后可以在项目命令行使用 eslint -h 查看是否安装成功,安装成功后,该命令可以正常查看。
配置文件
生成配置文件
eslint --init
按提示选择对应的场景 即可自动生成对应的.eslintrc.js
module.exports = {
"env": {
"browser": true,
"es2020": true
},
"extends": [
"eslint:recommended",
"plugin:vue/essential"
],
"parserOptions": {
"ecmaVersion": 12
},
"plugins": [
"vue"
],
"rules": {
}
};
使用
1、主动时机触发
(1)手动调用脚本使用
在package.json中配置script
"scripts": {
"lint": "eslint --ext .vue,.js src",
"lintfix": "eslint --ext .vue,.js src --fix"
},
在命令行执行: npm run lint 和 npm run lintfix 即可对src目录下对应的文件进行检测。
(2)与git hook搭配使用
保证提交到git的代码都是经过eslint的,这样整个团队的代码才能真的统一风格。只靠自觉是不可靠的。
husky 和 lint-staged
npm install husky --save-dev
npm install lint-staged --save-dev
husky:可以在git commit执行前触发特定指令
lint-staged: 只对在git add 的暂存区中的文件进行特定处理
在package.json中使用
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -e"
}
},
"lint-staged":{
"src/**/*": ["eslint --fix", "git add"]
}
这样一来就可以在git commit 前自动触发一次lint-staged 执行,lint-staged可以指定对git暂存区中的可以自己指定的文件进行eslint fix 和 git add(如果自动修复后没有检测问题,就可以直接通过commit了,避免还需要自己手动add commit 一次)
2、VScode 自动提醒
安装vscode的eslint扩展
扩展会先去使用工作空间的eslint库,如果没有就会使用全局的;所以它会按本地的.eslintrc.js的配置来自动进行检查。
默认只会对工作空间的js文件进行检查,如果想让它检查其他的文件类型需要在vscode的setting.json中配置:
"eslint.validate": [
"javascript",
"javascriptreact",
"vue"
],
这样就可以对js vue文件进行检查了,右侧的就是检查出来的提示错误数量:
3、vscode代码保存时自动eslint格式化
在vscode的setting.json中进行配置:
"eslint.autoFixOnSave": true,
配置该项后,当js文件进行保存时会自动按该工作区
的.eslintrc.js的规则进行自动格式化;
但是.vue文件内保存不会eslint格式化,要在.vue上自动保存eslint格式化需要添加如下配置:
"eslint.autoFixOnSave": true,
"eslint.validate": [
"javascript",
{
"language": "vue",
"autoFix": true
},
"javascriptreact",
"vue"
],
这样.js .vue文件就可以都自动保存eslint格式化了。 这里有个坑!!! 保存自动格式化在多个场景可能都会生效,vscode自带保存格式化的能力,另外安装了vetur也可能有自动格式化的设置,需要在vscode设置中去除调这些相互冲突的格式化:
"eslint.autoFixOnSave": true,
"eslint.validate": [
"javascript",
{
"language": "vue",
"autoFix": true
},
"javascriptreact",
"vue"
],
// "editor.formatOnSave": true, //注释调vscode自带的保存格式化 避免冲突
总结
本文介绍了eslint的安装、配置和使用。重点介绍了不同的使用场景:在命令行中手动触发,git commit前自动触发,在vscode中设置自动提醒,保存代码时自动按eslint的规则fix格式化,希望对你或团队的开发效能提升能有所帮助。
如果本文对你有用可以给作者点赞和评论喔,欢迎交流~