ESLint 是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误。

在本文开始前, 我们假设您已经有一个webpack + react 的 初始项目。

初始化

首先, 现在 项目中 安装 eslint 和 eslint-loader

yarn add eslint eslint-loader -D
复制代码

在webpack中,通过 .eslintrc 文件 对 eslint 进行配置。在根目录下 执行 touch .eslintrc 在根目录下生成 .eslintrc 配置文件

eslint-loader

在 webpack.config.js 中 配置 eslint-loader.

module: {// ...rules: [// ...{test: /\.(js|jsx)$/,enforce: 'pre',loader: 'eslint-loader',include: path.resolve(__dirname, './src/**/*.js'),exclude: /node_modules/},]
}
复制代码

我们的项目中之前已经使用了 babel-loader对我们的代码进行转译, 我们可以把 eslint-loader 和他一起使用。

module: {// ...rules: [// ...{test: /\.(js|jsx)$/,loader: ['babel-loader', 'eslint-loader'],include: path.resolve(__dirname, './src/**/*.js'),exclude: /node_modules/},]
}
复制代码

babel-eslint

我们的项目中使用了 es6 的语法, 可以通过 babel-eslint 进行检测。

yarn add babel-eslint -D
复制代码

.eslintrc

{parser: "babel-eslint","rules": {}
}
复制代码

然后, 便可以添加 rules 来检测我们代码,更多规则可参考官方文档

{"parser": "babel-eslint","rules": {"indent": ["error", 4, {"SwitchCase": 1}],"no-extra-boolean-cast": "error","no-cond-assign": "error","no-magic-numbers": ["off", {"ignoreArrayIndexes": true,"ignore": [0, 1],"enforceConst": true}],"max-params": ["error", 6],"no-var": "error","no-console": "off","no-alert": "off","no-debugger": "off",// ...}
}
复制代码

eslint-plugin-react

我们可以使用eslint-plugin-react 来检测 react 的一些语法规则

yarn add eslint-plugin-react -D
复制代码

.eslintrc

{// ..."plugins": ["react",],"rules": {"react/jsx-uses-react": "error","react/prop-types": "error",// ...}
}复制代码

Environments 指定脚本的运行环境。

env: 指定脚本的运行环境。每种环境都有一组特定的预定义全局变量。

browser - 浏览器环境中的全局变量。
node - Node.js 全局变量和 Node.js 作用域。
commonjs - CommonJS 全局变量和 CommonJS 作用域 (用于 Browserify/WebPack 打包的只在浏览器中运行的代码)。
shared-node-browser - Node.js 和 Browser 通用全局变量。
es6 - 启用除了 modules 以外的所有 ECMAScript 6 特性(该选项会自动设置 ecmaVersion 解析器选项为 6)。
worker - Web Workers 全局变量。
amd - 将 require() 和 define() 定义为像 amd 一样的全局变量。
复制代码

更多环境变量请参考 官方文档

.eslintrc

{// ..."env": {"browser": true,"node": true,"es6": true,"amd": true},
}
复制代码

Globals - 脚本在执行期间访问的额外的全局变量。

在配置文件里配置全局变量时,使用 globals 指出你要使用的全局变量。将变量设置为 true 将允许变量被重写,或 false 将不允许被重写。

.eslintrc

{// ..."globals": {"var1": true,"var2": false,}
}
复制代码

eslint-config-airbnb

我们在使用 eslint 的时候 可以使用别人配置好的 配置, 我们可以选用 Airbnb 标准。

使用 Airbnb标准,还需要 两个 必须的 插件。

yarn add eslint-config-airbnb eslint-plugin-jsx-a11y eslint-plugin-import -D

.eslintrc

{// ..."extends": "airbnb",
}
复制代码

pre-commit

我们的项目使用了git, 可以通过设置pre-commit 来对我们的代码 每次提交时 进行检测,如果检测到 代码 不符合 eslint规范,则不允许 提交, 这样可以很大程度上保证我们的代码质量。

yarn add pre-commit -D
复制代码

然后我们在 package.json 中 添加pre-commit配置

// ...
"scripts": {// ..."eslint": "eslint --ext .js src"
},
"pre-commit": ["eslint"
]
复制代码

转载于:https://juejin.im/post/5b988084e51d450e6e038a3e

webpack + react 使用 eslint相关推荐

  1. webpack+react多页面开发架构

    项目已经升级为最新版本参考react-multi-page-app webpack在单页面打包上应用广泛,以create-react-app为首的脚手架众多,单页面打包通常指的是将业务js,css打包 ...

  2. webpack+react+redux+es6开发模式---续

    一.前言 之前介绍了webpack+react+redux+es6开发模式 ,这个项目对于一个独立的功能节点来说是没有问题的.假如伴随着源源不断的需求,前段项目会涌现出更多的功能节点,需要独立部署运行 ...

  3. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  4. webpack+react+es6开发模式

    一.前言 实习了两个月,把在公司用到的前端开发模式做个简单的整理.公司里前端开发模式webpack+react+redux+es6,这里去掉了redux. webpack, react, redux等 ...

  5. 从零开始一个webpack+react项目

    从零开始一个webpack+react项目 最近在做react组件化的分享,从项目中抽离组件,那么第一步自然是搭建相关的环境 本篇旨在从零开始,用最少的配置.最少的代码.最少的依赖来搭建一个最简单的w ...

  6. 如何使用webpack+react+redux从头搭建Todolist应用

    webpack环境配置 应用整体框架设计 代码实现 Container Components Actions Reducers indexjs 测试 总结 一言不和先上demo: https://ms ...

  7. 在webpack中使用eslint配置(详细教程)-js教程-PHP中文网

    本篇文章主要介绍了webpack引入eslint配置详解,现在分享给大家,也给大家做个参考. webpack中eslint使用 首先,要使webpack支持eslint,就要要安装 eslint-lo ...

  8. 从零配置webpack(react+less+typescript+mobx)

    本文目标 从零搭建出一套支持react+less+typescript+mobx的webpack配置 最简化webpack配置 首页要初始化yarn和安装webpack的依赖 yarn init -y ...

  9. 从零开始搭建webpack+react开发环境

    环境主要依赖版本 webpack@4.8.1 webpack-cli@2.1.3 webpack-dev-server@3.1.4 react@16.3.2 babel-core@6.26.3 bab ...

最新文章

  1. Windows下基于python3使用word2vec训练中文维基百科语料(一)
  2. 开发步骤 采用restful接口开发的开发步骤
  3. 在LINUX下安装 Sybase ASE 11.0.3.3
  4. 解决wordcloud显示中文为空格(空白)
  5. Mysql 命令行控制事务
  6. Blueprint的实现
  7. quartus仿真22:优先编码器74148的级联(详细)
  8. Jqurey 得到url参数 getUrlParam
  9. ubuntu设置开机启动项
  10. 磁盘不见了只剩一个c盘_电脑磁盘忽然只剩c盘怎么回事_win10除了c盘都不见了的处理方法...
  11. IOStream读写文件操作
  12. linux 5.5安装万兆网卡驱动,CentOS 5.5 更新网卡驱动 bnx2 version: 2.0.2
  13. html5游戏 搭积木,搭积木游戏
  14. 二维条形码概念 | 二维码的知识与历史介绍 | 鸿顺捷知识分享
  15. 京东云 linux无法远程,问题解读 | Linux系统SSH无法远程登录时该怎么办?这里有篇小攻...
  16. SR505人体感应模块
  17. java中utp_5类UTP比3类UTP扭矩_______。
  18. Silvaco学习笔记(一)毕设相关
  19. layui复选框,设置部分可选
  20. 13个风格独特的关于(About)页面设计

热门文章

  1. Python爬取猪肉价格网并获取Json数据
  2. JS中进行字符串的相等比较时用==遇到的坑
  3. Python中使用PIL快速实现灰度图
  4. 怎样用命令行生成自己的签名文件keystore
  5. Dart 流中的 listen 和 forEach 有什么区别?
  6. 项目管理的五个核心风险区
  7. 用python让excel飞起来 pdf_老外用100个巨型吹风机, 想要靠它们飞起来, 你猜结果怎样...
  8. 根可达算法的根_GC垃圾回收算法
  9. 重磅!深入调研证券行业,神策数据发布《财富管理数字化转型现状与趋势洞察》报告...
  10. PPT 下载 | 神策数据徐美玲:数据分析之产品应用实践