diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000000..c3932cdfcf2c --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +node_modules/* +bower_components/* + diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000000..71c0e4176466 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "env": { + "browser": true, + "es6": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaFeatures": { + "experimentalObjectRestSpread": true, + "jsx": true + }, + "sourceType": "module" + }, + "plugins": ["react"], + "rules": { + "react/jsx-uses-vars": "error", + "no-console": "off", + "no-undef": "error" + }, + "globals": { + "require": false, + "module": false + } +} diff --git a/package.json b/package.json index 41e37779e7de..940113e89d21 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,14 @@ "devDependencies": { "babel-core": "~5.8.38", "babel-loader": "~5.4.2", + "babel-eslint": "~7.1.1", "bower": "~1.7.9", "clean-css": "~3.4.20", "copy-webpack-plugin": "~3.0.1", "css-loader": "~0.23.1", + "eslint": "^3.0.0", + "eslint-loader": "~1.6.1", + "eslint-plugin-react": "~6.9.0", "exports-loader": "~0.6.3", "extend": "~3.0.0", "extract-text-webpack-plugin": "~1.0.1", diff --git a/webpack.config.js b/webpack.config.js index e15903967ccd..de61e2160473 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -390,18 +390,23 @@ module.exports = { preLoaders: [ { test: /\.js$/, // include .js files - exclude: /bower_components\/.*\/|\/node_modules\//, // exclude external dependencies + exclude: /bower_components\/.*\/|\/node_modules/, // exclude external dependencies loader: "jshint-loader" }, { test: /\.es6$/, // include .js files loader: "jshint-loader?esversion=6" + }, + { + test: /\.jsx$/, + exclude: /bower_components\/.*\/|\/node_modules/, // exclude external dependencies + loader: "eslint-loader" } ], loaders: [ { test: /\.js$/, - exclude: /bower_components\/.*\//, + exclude: /bower_components\/.*\/|\/node_modules/, loader: 'strict' // Adds "use strict" }, {