From 5972ea07d80d7320b037aa873e74c41cf3f479dd Mon Sep 17 00:00:00 2001 From: doabit Date: Sun, 7 Aug 2016 12:03:50 +0800 Subject: [PATCH] Add eslint --- .eslintignore | 1 + .eslintrc.js | 22 ++++++++++++++++++++++ build/webpack.base.config.js | 21 +++++++++++++++++++-- package.json | 8 ++++++++ src/client-entry.js | 2 +- src/router/index.js | 2 +- src/vuex/actions.js | 2 +- src/vuex/store.js | 4 ++-- 8 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..4199381 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +build/*.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..8e6549e --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,22 @@ +module.exports = { + root: true, + parser: 'babel-eslint', + parserOptions: { + sourceType: 'module' + }, + // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style + extends: 'standard', + // required to lint *.vue files + plugins: [ + 'html' + ], + // add your custom rules here + 'rules': { + // allow paren-less arrow functions + 'arrow-parens': 0, + // allow async-await + 'generator-star-spacing': 0, + // allow debugger during development + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 + } +} diff --git a/build/webpack.base.config.js b/build/webpack.base.config.js index 62c3fee..5fe886c 100644 --- a/build/webpack.base.config.js +++ b/build/webpack.base.config.js @@ -1,5 +1,5 @@ const path = require('path') - +const projectRoot = path.resolve(__dirname, '../') module.exports = { devtool: '#source-map', entry: { @@ -15,6 +15,20 @@ module.exports = { root: path.join(__dirname, '../node_modules'), }, module: { + preLoaders: [ + { + test: /\.vue$/, + loader: 'eslint', + include: projectRoot, + exclude: /node_modules/ + }, + { + test: /\.js$/, + loader: 'eslint', + include: projectRoot, + exclude: /node_modules/ + } + ], loaders: [ { test: /\.vue$/, @@ -32,6 +46,9 @@ module.exports = { name: '[name].[ext]?[hash]' } } - ] + ], + eslint: { + formatter: require('eslint-friendly-formatter') + } } } diff --git a/package.json b/package.json index e8dbd9e..790007d 100644 --- a/package.json +++ b/package.json @@ -42,10 +42,18 @@ }, "devDependencies": { "babel-core": "^6.13.2", + "babel-eslint": "^6.1.2", "babel-loader": "^6.0.0", "babel-preset-es2015": "^6.13.2", "babel-preset-stage-2": "^6.13.0", "css-loader": "^0.23.1", + "eslint": "^3.2.2", + "eslint-config-standard": "^6.0.0-beta.2", + "eslint-friendly-formatter": "^2.0.6", + "eslint-loader": "^1.5.0", + "eslint-plugin-html": "^1.5.2", + "eslint-plugin-promise": "^2.0.1", + "eslint-plugin-standard": "^2.0.0", "extract-text-webpack-plugin": "^2.0.0-beta.3", "file-loader": "^0.8.4", "vue-loader": "^9.2.2", diff --git a/src/client-entry.js b/src/client-entry.js index 6580e67..0441b0a 100644 --- a/src/client-entry.js +++ b/src/client-entry.js @@ -1,3 +1,3 @@ import { app } from './app' -app.$mount('#app') \ No newline at end of file +app.$mount('#app') diff --git a/src/router/index.js b/src/router/index.js index 352aeba..e5bf7ba 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -18,4 +18,4 @@ const router = new VueRouter({ ] }) -export default router \ No newline at end of file +export default router diff --git a/src/vuex/actions.js b/src/vuex/actions.js index 1bc97d1..e4fd0e5 100644 --- a/src/vuex/actions.js +++ b/src/vuex/actions.js @@ -1,6 +1,6 @@ import request from 'axios' -request.defaults.baseURL = 'https://cnodejs.org/api/v1/'; +request.defaults.baseURL = 'https://cnodejs.org/api/v1/' export const getTopics = ({ commit, state }) => { return request.get('topics').then((response) => { diff --git a/src/vuex/store.js b/src/vuex/store.js index cf6c78c..50180c6 100644 --- a/src/vuex/store.js +++ b/src/vuex/store.js @@ -20,11 +20,11 @@ const mutations = { state.topics = topics }, - INCREMENT: (state) => { + INCREMENT: (state) => { state.count++ }, - DECREMENT: (state) => { + DECREMENT: (state) => { state.count-- } }