Skip to content

Commit

Permalink
feat: offical vue supports
Browse files Browse the repository at this point in the history
  • Loading branch information
aladdin-add committed Mar 28, 2024
1 parent 0c19e32 commit cdc4430
Show file tree
Hide file tree
Showing 34 changed files with 153 additions and 278 deletions.
41 changes: 18 additions & 23 deletions lib/config-generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,10 +148,6 @@ const compat = new FlatCompat({baseDirectory: __dirname, recommendedConfig: plug
let exportContent = "";
let needCompatHelper = false;

if (this.answers.moduleType === "commonjs" || this.answers.moduleType === "script") {
exportContent += ` {files: ["**/*.js"], languageOptions: {sourceType: "${this.answers.moduleType}"}},\n`;
}

if (this.answers.purpose === "syntax") {

// no need to install any plugin
Expand Down Expand Up @@ -185,19 +181,6 @@ const compat = new FlatCompat({baseDirectory: __dirname, recommendedConfig: plug
}
}

if (this.answers.env?.length > 0) {
this.result.devDependencies.push("globals");
importContent += "import globals from \"globals\";\n";
const envContent = {
browser: "globals: globals.browser",
node: "globals: globals.node",
"browser,node": "globals: {...globals.browser, ...globals.node}"
};

exportContent += ` {languageOptions: { ${envContent[this.answers.env.join(",")]} }},\n`;
}


if (this.answers.language === "typescript") {
this.result.devDependencies.push("typescript-eslint");
importContent += "import tseslint from \"typescript-eslint\";\n";
Expand All @@ -208,12 +191,8 @@ const compat = new FlatCompat({baseDirectory: __dirname, recommendedConfig: plug

this.result.devDependencies.push("eslint-plugin-vue");

// importContent += "import pluginVue from \"eslint-plugin-vue\";\n";

// // TODO: there is a wip for flat support - https://github.com/vuejs/eslint-plugin-vue/pull/2319
// exportContent += " pluginVue.configs[\"flat/essential\"],\n";
needCompatHelper = true;
exportContent += " ...compat.extends(\"plugin:vue/vue3-essential\").map(config => ({files: [\"**/*.vue\"], ...config})),\n";
importContent += "import pluginVue from \"eslint-plugin-vue\";\n";
exportContent += " pluginVue.configs[\"flat/essential\"],\n";
}

if (this.answers.framework === "react") {
Expand All @@ -222,6 +201,22 @@ const compat = new FlatCompat({baseDirectory: __dirname, recommendedConfig: plug
exportContent += " pluginReactConfig,\n";
}

if (this.answers.moduleType === "commonjs" || this.answers.moduleType === "script") {
exportContent += ` {files: ["**/*.js"], languageOptions: {sourceType: "${this.answers.moduleType}"}},\n`;
}

if (this.answers.env?.length > 0) {
this.result.devDependencies.push("globals");
importContent += "import globals from \"globals\";\n";
const envContent = {
browser: "globals: globals.browser",
node: "globals: globals.node",
"browser,node": "globals: {...globals.browser, ...globals.node}"
};

exportContent += ` {languageOptions: { ${envContent[this.answers.env.join(",")]} }},\n`;
}

if (needCompatHelper) {
this.result.devDependencies.push("@eslint/eslintrc", "@eslint/js");
}
Expand Down
2 changes: 1 addition & 1 deletion tests/__snapshots__/problems-commonjs-none-javascript
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import globals from "globals";


export default [
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
pluginJs.configs.recommended,
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
Expand Down
8 changes: 4 additions & 4 deletions tests/__snapshots__/problems-commonjs-none-typescript
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
{
"configContent": "import pluginJs from "@eslint/js";
import globals from "globals";
import tseslint from "typescript-eslint";
import globals from "globals";


export default [
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
pluginJs.configs.recommended,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
...tseslint.configs.recommended,
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"typescript-eslint",
"globals",
],
}
8 changes: 4 additions & 4 deletions tests/__snapshots__/problems-commonjs-react-javascript
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
{
"configContent": "import pluginJs from "@eslint/js";
import globals from "globals";
import pluginReactConfig from "eslint-plugin-react/configs/recommended.js";
import globals from "globals";


export default [
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
pluginJs.configs.recommended,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
pluginReactConfig,
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"eslint-plugin-react",
"globals",
],
}
8 changes: 4 additions & 4 deletions tests/__snapshots__/problems-commonjs-react-typescript
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
{
"configContent": "import pluginJs from "@eslint/js";
import globals from "globals";
import tseslint from "typescript-eslint";
import pluginReactConfig from "eslint-plugin-react/configs/recommended.js";
import globals from "globals";


export default [
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
pluginJs.configs.recommended,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
...tseslint.configs.recommended,
pluginReactConfig,
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"typescript-eslint",
"eslint-plugin-react",
"globals",
],
}
18 changes: 4 additions & 14 deletions tests/__snapshots__/problems-commonjs-vue-javascript
Original file line number Diff line number Diff line change
@@ -1,30 +1,20 @@
{
"configContent": "import pluginJs from "@eslint/js";
import pluginVue from "eslint-plugin-vue";
import globals from "globals";

import path from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";
import pluginJs from "@eslint/js";

// mimic CommonJS variables -- not needed if using CommonJS
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({baseDirectory: __dirname, recommendedConfig: pluginJs.configs.recommended});

export default [
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
pluginJs.configs.recommended,
pluginVue.configs["flat/essential"],
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
...compat.extends("plugin:vue/vue3-essential").map(config => ({files: ["**/*.vue"], ...config})),
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"eslint-plugin-vue",
"@eslint/eslintrc",
"@eslint/js",
"globals",
],
}
22 changes: 6 additions & 16 deletions tests/__snapshots__/problems-commonjs-vue-typescript
Original file line number Diff line number Diff line change
@@ -1,33 +1,23 @@
{
"configContent": "import pluginJs from "@eslint/js";
import globals from "globals";
import tseslint from "typescript-eslint";
import pluginVue from "eslint-plugin-vue";
import globals from "globals";

import path from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";
import pluginJs from "@eslint/js";

// mimic CommonJS variables -- not needed if using CommonJS
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({baseDirectory: __dirname, recommendedConfig: pluginJs.configs.recommended});

export default [
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
pluginJs.configs.recommended,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
...tseslint.configs.recommended,
...compat.extends("plugin:vue/vue3-essential").map(config => ({files: ["**/*.vue"], ...config})),
pluginVue.configs["flat/essential"],
{files: ["**/*.js"], languageOptions: {sourceType: "commonjs"}},
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"typescript-eslint",
"eslint-plugin-vue",
"@eslint/eslintrc",
"@eslint/js",
"globals",
],
}
6 changes: 3 additions & 3 deletions tests/__snapshots__/problems-esm-none-typescript
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
{
"configContent": "import pluginJs from "@eslint/js";
import globals from "globals";
import tseslint from "typescript-eslint";
import globals from "globals";


export default [
pluginJs.configs.recommended,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
...tseslint.configs.recommended,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"typescript-eslint",
"globals",
],
}
6 changes: 3 additions & 3 deletions tests/__snapshots__/problems-esm-react-javascript
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
{
"configContent": "import pluginJs from "@eslint/js";
import globals from "globals";
import pluginReactConfig from "eslint-plugin-react/configs/recommended.js";
import globals from "globals";


export default [
pluginJs.configs.recommended,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
pluginReactConfig,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"eslint-plugin-react",
"globals",
],
}
6 changes: 3 additions & 3 deletions tests/__snapshots__/problems-esm-react-typescript
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
{
"configContent": "import pluginJs from "@eslint/js";
import globals from "globals";
import tseslint from "typescript-eslint";
import pluginReactConfig from "eslint-plugin-react/configs/recommended.js";
import globals from "globals";


export default [
pluginJs.configs.recommended,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
...tseslint.configs.recommended,
pluginReactConfig,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"typescript-eslint",
"eslint-plugin-react",
"globals",
],
}
16 changes: 3 additions & 13 deletions tests/__snapshots__/problems-esm-vue-javascript
Original file line number Diff line number Diff line change
@@ -1,29 +1,19 @@
{
"configContent": "import pluginJs from "@eslint/js";
import pluginVue from "eslint-plugin-vue";
import globals from "globals";

import path from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";
import pluginJs from "@eslint/js";

// mimic CommonJS variables -- not needed if using CommonJS
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({baseDirectory: __dirname, recommendedConfig: pluginJs.configs.recommended});

export default [
pluginJs.configs.recommended,
pluginVue.configs["flat/essential"],
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
...compat.extends("plugin:vue/vue3-essential").map(config => ({files: ["**/*.vue"], ...config})),
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"eslint-plugin-vue",
"@eslint/eslintrc",
"@eslint/js",
"globals",
],
}
20 changes: 5 additions & 15 deletions tests/__snapshots__/problems-esm-vue-typescript
Original file line number Diff line number Diff line change
@@ -1,32 +1,22 @@
{
"configContent": "import pluginJs from "@eslint/js";
import globals from "globals";
import tseslint from "typescript-eslint";
import pluginVue from "eslint-plugin-vue";
import globals from "globals";

import path from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";
import pluginJs from "@eslint/js";

// mimic CommonJS variables -- not needed if using CommonJS
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({baseDirectory: __dirname, recommendedConfig: pluginJs.configs.recommended});

export default [
pluginJs.configs.recommended,
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
...tseslint.configs.recommended,
...compat.extends("plugin:vue/vue3-essential").map(config => ({files: ["**/*.vue"], ...config})),
pluginVue.configs["flat/essential"],
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
"devDependencies": [
"eslint",
"@eslint/js",
"globals",
"typescript-eslint",
"eslint-plugin-vue",
"@eslint/eslintrc",
"@eslint/js",
"globals",
],
}
2 changes: 1 addition & 1 deletion tests/__snapshots__/problems-script-none-javascript
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import globals from "globals";


export default [
{files: ["**/*.js"], languageOptions: {sourceType: "script"}},
pluginJs.configs.recommended,
{files: ["**/*.js"], languageOptions: {sourceType: "script"}},
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
];",
"configFilename": "eslint.config.js",
Expand Down
Loading

0 comments on commit cdc4430

Please sign in to comment.