Eslint-Webpack-React

eslint 结合webpack 在React环境下的使用

检查代码的两种方式

  • 将eslint和代码编辑器相结合
  • 将eslint编码规范集成到构建工具(webpack)中

将eslint和代码编辑器相结合

在代码编辑器中直接下载eslint插件并安装,可以结合.editorconfig配置文件进行相关规范设置

将eslint编码规范集成到构建工具(webpack)中

  • 编辑器:vscode
  • package.json:
 "dependencies": {
    "react": "^15.6.1",
    "react-dom": "^15.6.1",
    "react-router-dom": "^4.2.2"
  },
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-eslint": "^8.0.1",
    "babel-loader": "^7.1.2",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "css-loader": "^0.28.7",
    "eslint": "^4.7.2",
    "eslint-config-airbnb": "^15.1.0",
    "eslint-loader": "^1.9.0",
    "eslint-plugin-import": "^2.7.0",
    "eslint-plugin-jsx-a11y": "^5.1.0",
    "eslint-plugin-react": "^7.4.0",
    "html-webpack-plugin": "^2.30.1",
    "postcss-loader": "^2.0.6",
    "style-loader": "^0.18.2",
    "url-loader": "^0.5.9",
    "webpack": "^3.6.0",
    "webpack-dev-server": "^2.8.2"
  }
  • .eslintrc.json:
{
    "parserOptions":{
        "ecmaVersion": 6, // 指定想要支持的javascript版本,这里6表示es6
        "sourceType": "module", // 默认为"script",代码是ECMAScript准则,则设置为"module"
        "ecmaFeatures": {
            "jsx": true // 启用JSX
        }
    },
    // 指定脚本的运行环境,支持定义多个
    "env": {
        "es6": true,
        "node": true,
        "browser": true
    },
    // 使用第三方airbnb
    "extends": "airbnb",
    // airbnb包括以下三个插件,插件名称可以省略eslint-plugin-前缀
    "plugins":[
        "react",
        "jsx-a11y",
        "import"
    ],
    "parser":"babel-eslint",
    // 定义自己的规则
    "rules": {
        "comma-dangle": ["error","never"], //禁止末尾逗号
        "jsx-a11y/href-no-hash": ["error", { "components": ["a"] }],
        "linebreak-style":0
    }
}
  • webpack.config.js配置
module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        enforce: 'pre',
        exclude: /node_modules/,
        include: appath,
        loader: require.resolve('eslint-loader'),
        options: {
          // fix: true
        }
      }
    ]
  },

注意:

  1. 使用第三方airbnb的三个插件时,jsx-a11y不能使用v6版本(貌似被移除了),后续官方可能会出解决方案。
  2. eslint自定义规则时如果不配置"linebreak-style":0,代码检测会报[eslint] Expected linebreaks to be 'LF' but found 'CRLF'. (linebreak-style)的错,网上有人说是不同系统间的问题,试了下,我没有解决。所以在配置中自定义为0,即关闭该项代码检测。
  3. webpack.config.js中需要配置eslint-loader为先执行的loader。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,212评论 19 139
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 14,348评论 7 110
  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 10,711评论 4 31
  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 12,561评论 7 35
  • 最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的...
    My_Oh_My阅读 12,541评论 40 247

友情链接更多精彩内容