安装eslint;webpack配置用到的eslint-loader;eslint用于解析js的解析器babel-eslint
npm i eslint eslint-loader babel-eslint -Dnode
以airbnb为eslint的配置规则
npm i eslint-config-airbnb -D
及其所须要的插件
npm i eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react -Dreact
node环境、es6环境下的插件
npm i eslint-plugin-node eslint-plugin-promise -Dwebpack
在项目根目录下新建.eslintrc文件,开始配置。git
{ // 指定js解析器 "parser": "babel-eslint", // 定义ecma版本;sourceType定义为模块化的js编写模式 "parserOptions": { "ecmaVersion": 6, "sourceType": "module" }, // 定义运行环境,如不配置browser为true则会报出window、document变量未定义的错误。同时须要配置node为true,由于项目基于webpack构建会用到node中的如process全局变量。 "env": { "browser": true, "node": true, "es6": true }, // 运用airbnb规则,标准规则为standard "extends": "airbnb", // 自定义规则 "rules": { "semi": [0] // 是否对结尾分号进行检测 -- 0为不检测 } }
module: { rules: [{ test: /\.jsx?$/, exclude: /node_modules/, use: ['babel-loader', 'eslint-loader'] }] }
注意loader的执行顺序为从右到左,eslint-loader需在最右,先进行了eslint验证再进行babel的编译。es6
接着咱们来走一波,而后发现了大量的报错,其中最为多的是这个东西👇web
Expected linebreaks to be 'LF' but found 'CRLF'
这个就是不一样系统下的换行符会有所不一样,windows的是CRLF,解决这个问题就须要用到editorconfig了npm
市场里直接搜索EditorConfig for VS Code安装。json
项目根目录下建立.editorconfig文件,而且配置windows
# 是不是顶级配置文件,设置为true的时候才会中止搜索.editorconfig文件 root = true [*] charset = utf-8 # 末尾行去掉尾随的空格 trim_trailing_whitespace = true # 末尾行后加多一行空行 insert_final_newline = true # <"tab" | "space"> 制表符类型 indent_style = space indent_size = 2 # <"lf" | "cr" | "crlf"> 换行符类型 end_of_line = lf
如上,分别为:
报错的行数 / 错误类型 / 错误描述 / 对应的eslint规则promise
有时候咱们不须要对某些代码进行eslint检测,这时咱们能够加上eslint注释👇
export default class App extends React.Component { // eslint-disable-line render() { return <div>Home</div>; } }
咱们在代码提交前但愿先用eslint检测一遍代码,若是不经过则禁止提交代码。
实施方法以下👇
一、安装工具husky来设置git钩子 npm i husky -D
二、配置package.json文件
// husky提供的钩子 "husky": { "hooks": { // 在执行git commit以前先执行pre-commit,也就是执行eslint检测,若不成功不能进入git commit "pre-commit": "npm run lint" } }, "scripts": { // eslint检测src目录下的全部拓展名为js和jsx的文件 "lint": "eslint --ext .js --ext .jsx src/" }
结果就是这样👇
eslint报错了就直接不给commit