From dc9486cfb9d816259241284a088e35e5ec4c3e7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20L=C3=BCnborg?= Date: Wed, 8 May 2019 10:58:20 +0200 Subject: [PATCH 1/3] =?UTF-8?q?fix(cli-plugin-eslint):=20=20default=20rule?= =?UTF-8?q?s=20accept=20mutation=20of=20vuex=20=E2=80=9Estate=E2=80=9C=20a?= =?UTF-8?q?rgument.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #3954 --- .../@vue/cli-plugin-eslint/eslintOptions.js | 18 ++++++++++++++++- .../@vue/cli-plugin-eslint/generator/index.js | 2 +- packages/@vue/cli/__tests__/invoke.spec.js | 20 ++++++++++++++++++- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/eslintOptions.js b/packages/@vue/cli-plugin-eslint/eslintOptions.js index 5c2896a0f0..8ddd03144b 100644 --- a/packages/@vue/cli-plugin-eslint/eslintOptions.js +++ b/packages/@vue/cli-plugin-eslint/eslintOptions.js @@ -1,4 +1,4 @@ -exports.config = api => { +exports.config = (api, _config) => { const config = { root: true, env: { node: true }, @@ -8,6 +8,22 @@ exports.config = api => { 'no-debugger': makeJSOnlyValue(`process.env.NODE_ENV === 'production' ? 'error' : 'off'`) } } + if (_config === 'airbnb') { + config.rules['no-param-reassign'] = ['error', { + props: true, + ignorePropertyModificationsFor: [ + 'state', // for vuex state + 'acc', // for reduce accumulators + 'e', // for e.returnvalue + 'ctx', // for Koa routing + 'req', // for Express requests + 'request', // for Express requests + 'res', // for Express responses + 'response', // for Express responses + '$scope', // for Angular 1 scopes + ] + }] + } if (!api.hasPlugin('typescript')) { config.parserOptions = { parser: 'babel-eslint' diff --git a/packages/@vue/cli-plugin-eslint/generator/index.js b/packages/@vue/cli-plugin-eslint/generator/index.js index 8a4b10e23d..845a729776 100644 --- a/packages/@vue/cli-plugin-eslint/generator/index.js +++ b/packages/@vue/cli-plugin-eslint/generator/index.js @@ -6,7 +6,7 @@ module.exports = (api, { config, lintOn = [] }, _, invoking) => { lintOn = lintOn.split(',') } - const eslintConfig = require('../eslintOptions').config(api) + const eslintConfig = require('../eslintOptions').config(api, config) const pkg = { scripts: { diff --git a/packages/@vue/cli/__tests__/invoke.spec.js b/packages/@vue/cli/__tests__/invoke.spec.js index 4470c33d10..6c816d0b99 100644 --- a/packages/@vue/cli/__tests__/invoke.spec.js +++ b/packages/@vue/cli/__tests__/invoke.spec.js @@ -43,7 +43,25 @@ async function assertUpdates (project) { const eslintrc = parseJS(await project.read('.eslintrc.js')) expect(eslintrc).toEqual(Object.assign({}, baseESLintConfig, { - extends: ['plugin:vue/essential', '@vue/airbnb'] + extends: ['plugin:vue/essential', '@vue/airbnb'], + rules: { + 'no-console': 'off', + 'no-debugger': 'off', + 'no-param-reassign': ['error', { + props: true, + ignorePropertyModificationsFor: [ + 'state', // for vuex state + 'acc', // for reduce accumulators + 'e', // for e.returnvalue + 'ctx', // for Koa routing + 'req', // for Express requests + 'request', // for Express requests + 'res', // for Express responses + 'response', // for Express responses + '$scope' // for Angular 1 scopes + ] + }] + } })) const lintedMain = await project.read('src/main.js') From b9b7deefca1059d8a88fa993333ecb0aa2d952d4 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Sat, 1 Jun 2019 13:29:33 +0200 Subject: [PATCH 2/3] refactor: move rule into config-airbnb pkg --- packages/@vue/eslint-config-airbnb/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/@vue/eslint-config-airbnb/index.js b/packages/@vue/eslint-config-airbnb/index.js index 7b49726b3f..80d8d90526 100644 --- a/packages/@vue/eslint-config-airbnb/index.js +++ b/packages/@vue/eslint-config-airbnb/index.js @@ -23,6 +23,14 @@ module.exports = { jsx: 'never', ts: 'never', tsx: 'never' + }], + 'no-param-reassign': ['error', { + props: true, + ignorePropertyModificationsFor: [ + 'state', // for vuex state + 'acc', // for reduce accumulators + 'e' // for e.returnvalue + ] }] } } From b4f2d4dbb650f7e73e0a13baaeb35b5c5f3b68e1 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Sat, 1 Jun 2019 13:30:25 +0200 Subject: [PATCH 3/3] =?UTF-8?q?revert:=20"fix(cli-plugin-eslint):=20=20def?= =?UTF-8?q?ault=20rules=20accept=20mutation=20of=20vuex=20=E2=80=9Estate?= =?UTF-8?q?=E2=80=9C=20argument."?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit dc9486cfb9d816259241284a088e35e5ec4c3e7e. --- .../@vue/cli-plugin-eslint/eslintOptions.js | 18 +---------------- .../@vue/cli-plugin-eslint/generator/index.js | 2 +- packages/@vue/cli/__tests__/invoke.spec.js | 20 +------------------ 3 files changed, 3 insertions(+), 37 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/eslintOptions.js b/packages/@vue/cli-plugin-eslint/eslintOptions.js index 8ddd03144b..5c2896a0f0 100644 --- a/packages/@vue/cli-plugin-eslint/eslintOptions.js +++ b/packages/@vue/cli-plugin-eslint/eslintOptions.js @@ -1,4 +1,4 @@ -exports.config = (api, _config) => { +exports.config = api => { const config = { root: true, env: { node: true }, @@ -8,22 +8,6 @@ exports.config = (api, _config) => { 'no-debugger': makeJSOnlyValue(`process.env.NODE_ENV === 'production' ? 'error' : 'off'`) } } - if (_config === 'airbnb') { - config.rules['no-param-reassign'] = ['error', { - props: true, - ignorePropertyModificationsFor: [ - 'state', // for vuex state - 'acc', // for reduce accumulators - 'e', // for e.returnvalue - 'ctx', // for Koa routing - 'req', // for Express requests - 'request', // for Express requests - 'res', // for Express responses - 'response', // for Express responses - '$scope', // for Angular 1 scopes - ] - }] - } if (!api.hasPlugin('typescript')) { config.parserOptions = { parser: 'babel-eslint' diff --git a/packages/@vue/cli-plugin-eslint/generator/index.js b/packages/@vue/cli-plugin-eslint/generator/index.js index 845a729776..8a4b10e23d 100644 --- a/packages/@vue/cli-plugin-eslint/generator/index.js +++ b/packages/@vue/cli-plugin-eslint/generator/index.js @@ -6,7 +6,7 @@ module.exports = (api, { config, lintOn = [] }, _, invoking) => { lintOn = lintOn.split(',') } - const eslintConfig = require('../eslintOptions').config(api, config) + const eslintConfig = require('../eslintOptions').config(api) const pkg = { scripts: { diff --git a/packages/@vue/cli/__tests__/invoke.spec.js b/packages/@vue/cli/__tests__/invoke.spec.js index 6c816d0b99..4470c33d10 100644 --- a/packages/@vue/cli/__tests__/invoke.spec.js +++ b/packages/@vue/cli/__tests__/invoke.spec.js @@ -43,25 +43,7 @@ async function assertUpdates (project) { const eslintrc = parseJS(await project.read('.eslintrc.js')) expect(eslintrc).toEqual(Object.assign({}, baseESLintConfig, { - extends: ['plugin:vue/essential', '@vue/airbnb'], - rules: { - 'no-console': 'off', - 'no-debugger': 'off', - 'no-param-reassign': ['error', { - props: true, - ignorePropertyModificationsFor: [ - 'state', // for vuex state - 'acc', // for reduce accumulators - 'e', // for e.returnvalue - 'ctx', // for Koa routing - 'req', // for Express requests - 'request', // for Express requests - 'res', // for Express responses - 'response', // for Express responses - '$scope' // for Angular 1 scopes - ] - }] - } + extends: ['plugin:vue/essential', '@vue/airbnb'] })) const lintedMain = await project.read('src/main.js')