create-vue icon indicating copy to clipboard operation
create-vue copied to clipboard

Module generates eslint config with the old commonJS syntax

Open aleksey-hoffman opened this issue 1 year ago • 10 comments

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

aleksey-hoffman avatar Feb 22 '24 13:02 aleksey-hoffman

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 👍

cexbrayat avatar Feb 22 '24 13:02 cexbrayat

@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

aleksey-hoffman avatar Feb 22 '24 15:02 aleksey-hoffman

Let's keep an eye on https://github.com/vuejs/eslint-plugin-vue/pull/2407

haoqunjiang avatar Feb 26 '24 15:02 haoqunjiang

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

JoostKersjes avatar Apr 08 '24 10:04 JoostKersjes

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

cexbrayat avatar Apr 09 '24 16:04 cexbrayat

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.

JoostKersjes avatar Apr 11 '24 15:04 JoostKersjes

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

cexbrayat avatar Apr 11 '24 15:04 cexbrayat

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

JoostKersjes avatar Apr 12 '24 17:04 JoostKersjes