From d7be998b255a39e4aee03ca9ea6d5898661d819a Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Wed, 13 Oct 2021 09:52:38 +0200 Subject: [PATCH] feat: switch to stylish formatter for eslint `eslint-formatter-codeframe` is no longer provided by eslint v8, and must be isntalled separately. As the dependency is not actively maintained, we switch the default formatter to the built-in `stylish` one. See https://eslint.org/docs/8.0.0/user-guide/migrating-to-8.0.0#removed-formatters Refs #6740 --- docs/core-plugins/eslint.md | 2 +- docs/ru/core-plugins/eslint.md | 2 +- packages/@vue/cli-plugin-eslint/README.md | 2 +- .../__tests__/eslintPlugin.spec.js | 14 +++++++++----- packages/@vue/cli-plugin-eslint/index.js | 4 ++-- packages/@vue/cli-plugin-eslint/lint.js | 2 +- .../@vue/cli-service/types/cli-service-test.ts | 2 +- 7 files changed, 16 insertions(+), 12 deletions(-) diff --git a/docs/core-plugins/eslint.md b/docs/core-plugins/eslint.md index 2517719a39..562390d5d9 100644 --- a/docs/core-plugins/eslint.md +++ b/docs/core-plugins/eslint.md @@ -11,7 +11,7 @@ Options: - --format [formatter] specify formatter (default: codeframe) + --format [formatter] specify formatter (default: stylish) --no-fix do not fix errors --max-errors specify number of errors to make build failed (default: 0) --max-warnings specify number of warnings to make build failed (default: Infinity) diff --git a/docs/ru/core-plugins/eslint.md b/docs/ru/core-plugins/eslint.md index 0cc2566019..5114efb718 100644 --- a/docs/ru/core-plugins/eslint.md +++ b/docs/ru/core-plugins/eslint.md @@ -11,7 +11,7 @@ Опции: - --format [formatter] определяет форматтер (по умолчанию: codeframe) + --format [formatter] определяет форматтер (по умолчанию: stylish) --no-fix отключает автоматическое исправление ошибок --max-errors количество ошибок, по достижению которого сборка заканчивается ошибкой (по умолчанию: 0) --max-warnings количество предупреждений, по достижению которого сборка заканчивается ошибкой (по умолчанию: Infinity) diff --git a/packages/@vue/cli-plugin-eslint/README.md b/packages/@vue/cli-plugin-eslint/README.md index 2517719a39..562390d5d9 100644 --- a/packages/@vue/cli-plugin-eslint/README.md +++ b/packages/@vue/cli-plugin-eslint/README.md @@ -11,7 +11,7 @@ Options: - --format [formatter] specify formatter (default: codeframe) + --format [formatter] specify formatter (default: stylish) --no-fix do not fix errors --max-errors specify number of errors to make build failed (default: 0) --max-warnings specify number of warnings to make build failed (default: Infinity) diff --git a/packages/@vue/cli-plugin-eslint/__tests__/eslintPlugin.spec.js b/packages/@vue/cli-plugin-eslint/__tests__/eslintPlugin.spec.js index 5c220552a3..50419edc93 100644 --- a/packages/@vue/cli-plugin-eslint/__tests__/eslintPlugin.spec.js +++ b/packages/@vue/cli-plugin-eslint/__tests__/eslintPlugin.spec.js @@ -227,8 +227,8 @@ test('should persist cache', async () => { expect(has('node_modules/.cache/eslint/cache.json')).toBe(true) }) -test.skip(`should use formatter 'codeframe'`, async () => { - const project = await create('eslint-formatter-codeframe', { +test(`should use formatter 'stylish'`, async () => { + const project = await create('eslint-formatter-stylish', { plugins: { '@vue/cli-plugin-babel': {}, '@vue/cli-plugin-eslint': { @@ -259,9 +259,13 @@ test.skip(`should use formatter 'codeframe'`, async () => { isFirstMsg = false } else if (data.match(/semi/)) { // check the format of output - // https://eslint.org/docs/user-guide/formatters/#codeframe + // https://eslint.org/docs/user-guide/formatters/#stylish + // it looks like: + // ERROR in .../packages/test/eslint-formatter-stylish/src/main.js + // 1:22 error Missing semicolon semi + expect(data).toMatch(`src${path.sep}main.js`) expect(data).toMatch(`error`) - expect(data).toMatch(`Missing semicolon (semi) at src${path.sep}main.js`) + expect(data).toMatch(`Missing semicolon semi`) server.stdin.write('close') done() @@ -282,7 +286,7 @@ test(`should work with eslint v8`, async () => { } }) const { read, write, run } = project - await run('npm add -D eslint@^8.0.0-0 eslint-formatter-codeframe') + await run('npm add -D eslint@^8.0.0-0') // should've applied airbnb autofix const main = await read('src/main.js') expect(main).toMatch(';') diff --git a/packages/@vue/cli-plugin-eslint/index.js b/packages/@vue/cli-plugin-eslint/index.js index f67d7c4fbf..22f028cb60 100644 --- a/packages/@vue/cli-plugin-eslint/index.js +++ b/packages/@vue/cli-plugin-eslint/index.js @@ -52,7 +52,7 @@ module.exports = (api, options) => { resolveModule('eslint/package.json', cwd) || resolveModule('eslint/package.json', __dirname) ), - formatter: 'codeframe' + formatter: 'stylish' } webpackConfig.plugin('eslint').use(eslintWebpackPlugin, [eslintWebpackPluginOptions]) }) @@ -64,7 +64,7 @@ module.exports = (api, options) => { description: 'lint and fix source files', usage: 'vue-cli-service lint [options] [...files]', options: { - '--format [formatter]': 'specify formatter (default: codeframe)', + '--format [formatter]': 'specify formatter (default: stylish)', '--no-fix': 'do not fix errors or warnings', '--no-fix-warnings': 'fix errors, but do not fix warnings', '--max-errors [limit]': diff --git a/packages/@vue/cli-plugin-eslint/lint.js b/packages/@vue/cli-plugin-eslint/lint.js index 9eedd7f2b2..b37690cfca 100644 --- a/packages/@vue/cli-plugin-eslint/lint.js +++ b/packages/@vue/cli-plugin-eslint/lint.js @@ -124,7 +124,7 @@ module.exports = async function lint (args = {}, api) { const reportWarningCount = resultResults.reduce((p, c) => p + c.warningCount, 0) process.cwd = processCwd - const formatter = await eslint.loadFormatter(args.format || 'codeframe') + const formatter = await eslint.loadFormatter(args.format || 'stylish') if (config.outputFile) { const outputFilePath = path.resolve(config.outputFile) diff --git a/packages/@vue/cli-service/types/cli-service-test.ts b/packages/@vue/cli-service/types/cli-service-test.ts index ead164e792..e8661301b4 100644 --- a/packages/@vue/cli-service/types/cli-service-test.ts +++ b/packages/@vue/cli-service/types/cli-service-test.ts @@ -13,7 +13,7 @@ const servicePlugin: ServicePlugin = (api, options) => { description: 'lint and fix source files', usage: 'vue-cli-service lint [options] [...files]', options: { - '--format [formatter]': 'specify formatter (default: codeframe)' + '--format [formatter]': 'specify formatter (default: stylish)' }, details: 'For more options, see https://eslint.org/docs/user-guide/command-line-interface#options' },