ESLint is an open source project originally created by Nicholas C. Zakas in June 2013. Its goal is to provide a pluggable linting utility for JavaScript.javascript
仍是放个中文的介绍吧~前端
ESLint最初是由Nicholas C. Zakas 于2013年6月建立的开源项目。它的目标是提供一个插件化的javascript代码检测工具。java
简单的说,eslint就是一个可以帮咱们检查咱们代码的格式、语法,从而来规范前端开发团队在开发流程中的代码。node
若是你想让 ESLint 成为你项目构建系统的一部分,咱们建议在本地安装。你可使用 npm:react
$ npm install eslint --save-dev
复制代码
紧接着你应该设置一个配置文件:git
$ ./node_modules/.bin/eslint --init
复制代码
以后,你能够在你项目根目录运行 ESLint:github
$ ./node_modules/.bin/eslint yourfile.js
复制代码
或者你可使用npx来运行 ESLint Instead of navigating to ./node_modules/.bin/ you may also use npx to run eslint:shell
$ npx eslint
复制代码
若是你想使 ESLint 适用于你全部的项目,咱们建议你全局安装 ESLint。你可使用 npm:npm
$ npm install -g eslint
复制代码
紧接着你应该设置一个配置文件:bash
$ eslint --init
复制代码
以后,你能够在任何文件或目录运行 ESLint:
$ eslint yourfile.js
复制代码
运行 eslint --init
以后,.eslintrc 文件会在你的文件夹中自动建立。你能够在 .eslintrc 文件中看到许多像这样的规则:
{
"rules": {
"semi": ["error", "always"],
"quotes": ["error", "double"]
}
}
复制代码
这里,"semi"指的是分号,若是你的代码语句缺乏分号,则报错。"always"表示老是须要分号。具体的配置项能够到ESLint官网查看。
你能够直接在.eslintrc这里面配置本身项目的rules,但咱们也能够直接使用如今比较火的代码规范Airbnb's javascript style guide。
我喜欢使用Airbnb's javascript style guide 做为校验javascript的规则。Airbnb的规范是很火的代码规范。
For Chinese version
Important: 强烈推荐添加 eslint-config-airbnb 到你的ESLint. 更多信息和配置请访问www.npmjs.com/package/esl….
咱们须要安装正确版本的包,如下命令能够查看
npm info "eslint-config-airbnb@latest" peerDependencies
复制代码
固然,能够直接
npm i eslint-config-airbnb
复制代码
若是安装上面遇到问题,建议访问官网.
安装好以后,添加 "extends": "airbnb" 到你的.eslintrc.
{ "extends": "airbnb",
"rules": {
"semi": ["error", "always"],
"quotes": ["error", "double"]
}
}
复制代码
若是你碰到你不喜欢、或者不适用当前项目的规范规则,你能够选择屏蔽掉。像这样。
{ "extends": "airbnb",
"rules": {
"import/prefer-default-export": 0,
"jsx-a11y/href-no-hash": 0,
"react/forbid-prop-types": 1,
"react/require-default-props": 1,
"react/jsx-no-bind": 0,
"jsx-a11y/rule-name": 0,
"react/prop-types": 0,
"jsx-a11y/click-events-have-key-events": 0,
"jsx-a11y/no-static-element-interactions": 0,
"react/destructuring-assignment": 0,
"jsx-a11y/anchor-is-valid": 0,
"react/no-unescaped-entities": 1,
"react/react-in-jsx-x": 0,
"react/react-in-jsx-scope": 0
}
}
复制代码