From 5f117120e1c18e0356546b995aeb5430fd8a16d7 Mon Sep 17 00:00:00 2001 From: JingkaiZhao Date: Mon, 14 May 2018 23:09:51 +0800 Subject: [PATCH 1/4] feat: add max-warnings cli arg --- packages/@vue/cli-plugin-eslint/index.js | 3 ++- packages/@vue/cli-plugin-eslint/lint.js | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/index.js b/packages/@vue/cli-plugin-eslint/index.js index 6eaf496877..c18df32a3b 100644 --- a/packages/@vue/cli-plugin-eslint/index.js +++ b/packages/@vue/cli-plugin-eslint/index.js @@ -24,7 +24,8 @@ module.exports = (api, { lintOnSave }) => { usage: 'vue-cli-service lint [options] [...files]', options: { '--format [formatter]': 'specify formatter (default: codeframe)', - '--no-fix': 'do not fix errors' + '--no-fix': 'do not fix errors', + '--max-warnings [limit]': 'specify number of warnings to make build failed' }, details: 'For more options, see https://eslint.org/docs/user-guide/command-line-interface#options' }, args => { diff --git a/packages/@vue/cli-plugin-eslint/lint.js b/packages/@vue/cli-plugin-eslint/lint.js index 51183de74a..8ce2ae07d2 100644 --- a/packages/@vue/cli-plugin-eslint/lint.js +++ b/packages/@vue/cli-plugin-eslint/lint.js @@ -7,10 +7,11 @@ module.exports = function lint (args = {}, api) { const { log, done } = require('@vue/cli-shared-utils') const files = args._ && args._.length ? args._ : ['src', 'tests', '*.js'] + const argsConfig = normalizeConfig(args) const config = Object.assign({}, options, { fix: true, cwd - }, normalizeConfig(args)) + }, argsConfig) const engine = new CLIEngine(config) const report = engine.executeOnFiles(files) const formatter = engine.getFormatter(args.format || 'codeframe') @@ -19,7 +20,7 @@ module.exports = function lint (args = {}, api) { CLIEngine.outputFixes(report) } - if (!report.errorCount) { + if (!report.errorCount || report.errorCount <= (argsConfig.maxWarnings || 0)) { if (!args.silent) { const hasFixed = report.results.some(f => f.output) if (hasFixed) { From 589e5e93cee852bb802474ed8a01a0383ee7010f Mon Sep 17 00:00:00 2001 From: JingkaiZhao Date: Tue, 15 May 2018 00:35:55 +0800 Subject: [PATCH 2/4] feat: still need to log errors --- packages/@vue/cli-plugin-eslint/lint.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/lint.js b/packages/@vue/cli-plugin-eslint/lint.js index 8ce2ae07d2..42a04ab683 100644 --- a/packages/@vue/cli-plugin-eslint/lint.js +++ b/packages/@vue/cli-plugin-eslint/lint.js @@ -20,7 +20,7 @@ module.exports = function lint (args = {}, api) { CLIEngine.outputFixes(report) } - if (!report.errorCount || report.errorCount <= (argsConfig.maxWarnings || 0)) { + if (report.errorCount <= (argsConfig.maxWarnings || 0)) { if (!args.silent) { const hasFixed = report.results.some(f => f.output) if (hasFixed) { @@ -33,7 +33,7 @@ module.exports = function lint (args = {}, api) { }) log() } - if (report.warningCount) { + if (report.warningCount || report.errorCount) { console.log(formatter(report.results)) } else { done(hasFixed ? `All lint errors auto-fixed.` : `No lint errors found!`) From 2638577013563da12935e41f163e4d71e1fbc538 Mon Sep 17 00:00:00 2001 From: JingkaiZhao Date: Thu, 17 May 2018 00:41:47 +0800 Subject: [PATCH 3/4] feat: name --max-warnings to --max-errors, add --max-warnings --- packages/@vue/cli-plugin-eslint/index.js | 3 ++- packages/@vue/cli-plugin-eslint/lint.js | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/index.js b/packages/@vue/cli-plugin-eslint/index.js index c18df32a3b..9428601aff 100644 --- a/packages/@vue/cli-plugin-eslint/index.js +++ b/packages/@vue/cli-plugin-eslint/index.js @@ -25,7 +25,8 @@ module.exports = (api, { lintOnSave }) => { options: { '--format [formatter]': 'specify formatter (default: codeframe)', '--no-fix': 'do not fix errors', - '--max-warnings [limit]': 'specify number of warnings to make build failed' + '--max-errors [limit]': 'specify number of errors to make build failed (default: 0)', + '--max-warnings [limit]': 'specify number of warnings to make build failed (default: Infinity)' }, details: 'For more options, see https://eslint.org/docs/user-guide/command-line-interface#options' }, args => { diff --git a/packages/@vue/cli-plugin-eslint/lint.js b/packages/@vue/cli-plugin-eslint/lint.js index 42a04ab683..22586c95cf 100644 --- a/packages/@vue/cli-plugin-eslint/lint.js +++ b/packages/@vue/cli-plugin-eslint/lint.js @@ -20,7 +20,10 @@ module.exports = function lint (args = {}, api) { CLIEngine.outputFixes(report) } - if (report.errorCount <= (argsConfig.maxWarnings || 0)) { + const isErrorsExceed = report.errorCount > (argsConfig.maxErrors || 0) + const isWarningsExceed = report.warningCount > ( + argsConfig.hasOwnProperty('maxWarnings') ? argsConfig.maxWarnings : Infinity) + if (!isErrorsExceed && !isWarningsExceed) { if (!args.silent) { const hasFixed = report.results.some(f => f.output) if (hasFixed) { @@ -41,6 +44,12 @@ module.exports = function lint (args = {}, api) { } } else { console.log(formatter(report.results)) + if (isErrorsExceed && typeof argsConfig.maxErrors === 'number') { + log(`Eslint found too many errors (maximum: ${argsConfig.maxErrors}).`) + } + if (isWarningsExceed) { + log(`Eslint found too many warnings (maximum: ${argsConfig.maxWarnings}).`) + } process.exit(1) } } From 731e172a045c6391c6f60db79072f9eeef076a42 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 18 May 2018 18:05:04 -0400 Subject: [PATCH 4/4] Update lint.js --- packages/@vue/cli-plugin-eslint/lint.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/lint.js b/packages/@vue/cli-plugin-eslint/lint.js index 22586c95cf..e8e5f8e5d6 100644 --- a/packages/@vue/cli-plugin-eslint/lint.js +++ b/packages/@vue/cli-plugin-eslint/lint.js @@ -19,11 +19,13 @@ module.exports = function lint (args = {}, api) { if (config.fix) { CLIEngine.outputFixes(report) } + + const maxErrors = argsConfig.maxErrors || 0 + const maxWarnings = typeof argsConfig.maxWarnings === 'number' ? argsConfig.maxWarnings : Infinity + const isErrorsExceeded = report.errorCount > maxErrors + const isWarningsExceeded = report.warningCount > maxWarnings - const isErrorsExceed = report.errorCount > (argsConfig.maxErrors || 0) - const isWarningsExceed = report.warningCount > ( - argsConfig.hasOwnProperty('maxWarnings') ? argsConfig.maxWarnings : Infinity) - if (!isErrorsExceed && !isWarningsExceed) { + if (!isErrorsExceeded && !isWarningsExceeded) { if (!args.silent) { const hasFixed = report.results.some(f => f.output) if (hasFixed) {