Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Module generates eslint config with the old commonJS syntax #451

Closed
aleksey-hoffman opened this issue Feb 22, 2024 · 11 comments
Closed

Module generates eslint config with the old commonJS syntax #451

aleksey-hoffman opened this issue Feb 22, 2024 · 11 comments

Comments

@aleksey-hoffman
Copy link

The module generates eslint config with the old commonJS syntax

When you init a new project:

npm create vite@latest

And then setup the Vue / configure with vue-create template

Instead of generating modern .js config file with modern export default syntax, the module creates commonJS ./eslintrc.cjs file with the old commonJS module.exports = {} syntax, with a require() monkey patch at the top:

/* eslint-env node */
require("@rushstack/eslint-patch/modern-module-resolution")

module.exports = {
  root: true,
  'extends': [
    'plugin:vue/vue3-essential',
    'eslint:recommended',
    '@vue/eslint-config-typescript'
  ],
  parserOptions: {
    ecmaVersion: 'latest'
  }
}

It doesn't make any sense and it's not clear why it does that. Please shine some light on this issue

@cexbrayat
Copy link
Member

Hi @aleksey-hoffman

I'm not an expert on this, but I think it's because ESLint did not allow a flat config for a long time so this was a workaround when create-vue was initially created by @sodatea . Maybe it would be possible to do better now, I haven't checked.

If you think that can be improved, feel free to open a PR, we would gladly review and merge it 👍

@aleksey-hoffman
Copy link
Author

aleksey-hoffman commented Feb 22, 2024

@cexbrayat thanks for the reply, I suppose you are right about the workaround.
Since the latest Node.js versions support modern ES syntax, and a large portion of projects are being migrated to ES syntax now, I suppose we could make this change in create-vue v4.0.0 once ESlint v9 comes out - @sodatea what do you think, mate?

ESlint v9 will have full support for ES modules

@haoqunjiang
Copy link
Member

Let's keep an eye on vuejs/eslint-plugin-vue#2407

@JoostKersjes
Copy link

ESLint v9 is now released and PR vuejs/eslint-plugin-vue#2407 is merged. Seems like this can now be resolved with a PR?

@cexbrayat
Copy link
Member

@JoostKersjes Sure, feel free to open one and we'll gladly review it, thanks! 👍

@JoostKersjes
Copy link

A new version for @vue/create-eslint-config is where most of the work lies, so this is what I've been looking into. Not sure if PR's are accepted there though.

@cexbrayat
Copy link
Member

@JoostKersjes We're always happy to get PRs, feel free to open one

@JoostKersjes
Copy link

JoostKersjes commented Apr 12, 2024

@cexbrayat Hey, I think the create-eslint-config PR ready for review now. Could you do that or find someone for it?

@jez9999
Copy link

jez9999 commented May 16, 2024

I'd definitely like to see the project scaffolds using the flat config format ASAP. It greatly reduces the complexity of configuring ESLint, as well as setting a bunch of reasonable defaults the old system didn't and organizing things better. I want to get rid of the ./eslintrc.cjs in my current Vue project but I'm not exactly sure how to do it whilst retaining the same functioality and settings the current setup gives.

@Yordan-Ramchev
Copy link
Contributor

If someone is in a rush to use flat config, ESLint has a migration tool https://www.npmjs.com/package/@eslint/migrate-config

@haoqunjiang
Copy link
Member

Flat config support added in the latest release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants