Skip to content

eslint v8 support (and the removal of eslint-formatter-codeframe used by default by CLI v5 beta.5) #6740

Open
@cexbrayat

Description

@cexbrayat

Version

5.0.0-beta.5

Reproduction link

github.com

Environment info

  System:
    OS: macOS 11.6
    CPU: (8) x64 Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz
  Binaries:
    Node: 14.17.6 - ~/.volta/tools/image/node/14.17.6/bin/node
    Yarn: 1.22.10 - ~/.volta/tools/image/yarn/1.22.10/bin/yarn
    npm: 6.14.14 - ~/.volta/tools/image/npm/6.14.14/bin/npm
  Browsers:
    Chrome: 94.0.4606.81
    Edge: Not Found
    Firefox: 92.0.1
    Safari: 15.0
  npmPackages:
    @vue/cli-overlay:  5.0.0-beta.5
    @vue/cli-plugin-eslint: ~5.0.0-beta.5 => 5.0.0-beta.5
    @vue/cli-plugin-router:  5.0.0-beta.5
    @vue/cli-plugin-typescript: ~5.0.0-beta.5 => 5.0.0-beta.5
    @vue/cli-plugin-vuex:  5.0.0-beta.5
    @vue/cli-service: ~5.0.0-beta.5 => 5.0.0-beta.5
    @vue/cli-shared-utils:  5.0.0-beta.5
    @vue/compiler-core:  3.2.20
    @vue/compiler-dom:  3.2.20
    @vue/compiler-sfc: ^3.2.6 => 3.2.20
    @vue/compiler-ssr:  3.2.20
    @vue/component-compiler-utils:  3.2.2
    @vue/eslint-config-prettier: ^6.0.0 => 6.0.0
    @vue/eslint-config-typescript: ^7.0.0 => 7.0.0
    @vue/reactivity:  3.2.20
    @vue/ref-transform:  3.2.20
    @vue/runtime-core:  3.2.20
    @vue/runtime-dom:  3.2.20
    @vue/server-renderer:  3.2.20
    @vue/shared:  3.2.20
    @vue/web-component-wrapper:  1.3.0
    eslint-plugin-vue: ^7.19.1 => 7.19.1
    typescript: ~4.1.5 => 4.1.6
    vue: ^3.2.6 => 3.2.20
    vue-eslint-parser:  7.11.0
    vue-hot-reload-api:  2.3.4
    vue-loader:  16.8.1 (15.9.8)
    vue-style-loader:  4.1.3
    vue-template-es2015-compiler:  1.9.1
  npmGlobalPackages:
    @vue/cli: Not Found

Steps to reproduce

npx @vue/cli@next create eslint-v8 --inlinePreset '{"useConfigFiles": true,"plugins": {"@vue/cli-plugin-typescript": {},"@vue/cli-plugin-eslint": {"config": "prettier","lintOn": ["save"]}},"vueVersion":"3"}'

cd eslint-v8
# update eslint to 8.0.0 and typescript-eslint to 5.0.0 or clone https://github.com/cexbrayat/eslint-v8 directly
npm i
npm run lint

What is expected?

The linting command succeeds

What is actually happening?

The linting command throws:

 Error: The codeframe formatter is no longer part of core ESLint. Install it manually with `npm install -D eslint-formatter-codeframe`
Error: The codeframe formatter is no longer part of core ESLint. Install it manually with `npm install -D eslint-formatter-codeframe`
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
    at Function.Module._load (internal/modules/cjs/loader.js:745:27)
    at Module.require (internal/modules/cjs/loader.js:961:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at CLIEngine.getFormatter (/Users/ced-pro/Code/test/cli-tests/eslint-v8/node_modules/eslint/lib/cli-engine/cli-engine.js:1040:24)
    at ESLint.loadFormatter (/Users/ced-pro/Code/test/cli-tests/eslint-v8/node_modules/eslint/lib/eslint/eslint.js:634:37)
    at lint (/Users/ced-pro/Code/test/cli-tests/eslint-v8/node_modules/@vue/cli-plugin-eslint/lint.js:127:34)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async /Users/ced-pro/Code/test/cli-tests/eslint-v8/node_modules/@vue/cli-plugin-eslint/index.js:81:7
error Command failed with exit code 1.

With the work recently done, eslint v8 nearly works out of the box, except for the codeframe formatter issue, as it has been removed from eslint v8 (see https://eslint.org/docs/8.0.0/user-guide/migrating-to-8.0.0#removed-formatters).

Installing the missing dependency fixes the issue.

Maybe the CLI should install directly? I can work on a PR to bump eslint to v8 and typescript-eslint to v5, and add the missing dependency.
Or maybe the default formatter should change to a built-in one? https://eslint.org/docs/user-guide/formatters/

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions