Kaynağa Gözat

chore: eslint config

zhangyuhan 1 yıl önce
ebeveyn
işleme
6a2486bc08
5 değiştirilmiş dosya ile 116 ekleme ve 16 silme
  1. 2 0
      .eslintignore
  2. 49 2
      .vscode/settings.json
  3. 8 0
      eslint.config.mjs
  4. 6 1
      package.json
  5. 51 13
      pnpm-lock.yaml

+ 2 - 0
.eslintignore

@@ -0,0 +1,2 @@
+dist
+public

+ 49 - 2
.vscode/settings.json

@@ -1,4 +1,51 @@
 {
     "prettier.endOfLine": "lf",
-    "files.eol": "\n"
-}
+    "files.eol": "\n",
+  // Disable the default formatter, use eslint instead
+  "prettier.enable": false,
+  "editor.formatOnSave": false,
+
+  // Auto fix
+  "editor.codeActionsOnSave": {
+    "source.fixAll.eslint": "explicit",
+    "source.organizeImports": "never"
+  },
+
+  // Silent the stylistic rules in you IDE, but still auto fix them
+  "eslint.rules.customizations": [
+    { "rule": "style/*", "severity": "off", "fixable": true },
+    { "rule": "format/*", "severity": "off", "fixable": true },
+    { "rule": "*-indent", "severity": "off", "fixable": true },
+    { "rule": "*-spacing", "severity": "off", "fixable": true },
+    { "rule": "*-spaces", "severity": "off", "fixable": true },
+    { "rule": "*-order", "severity": "off", "fixable": true },
+    { "rule": "*-dangle", "severity": "off", "fixable": true },
+    { "rule": "*-newline", "severity": "off", "fixable": true },
+    { "rule": "*quotes", "severity": "off", "fixable": true },
+    { "rule": "*semi", "severity": "off", "fixable": true }
+  ],
+
+  // Enable eslint for all supported languages
+  "eslint.validate": [
+    "javascript",
+    "javascriptreact",
+    "typescript",
+    "typescriptreact",
+    "vue",
+    "html",
+    "markdown",
+    "json",
+    "jsonc",
+    "yaml",
+    "toml",
+    "xml",
+    "gql",
+    "graphql",
+    "astro",
+    "css",
+    "less",
+    "scss",
+    "pcss",
+    "postcss"
+  ]
+}

+ 8 - 0
eslint.config.mjs

@@ -0,0 +1,8 @@
+import antfu from '@antfu/eslint-config'
+
+export default antfu({
+  ignores: ["dist","**/dist/**","public","**/public/**"],
+  formatters: true,
+  unocss: true,
+  vue: true,
+})

+ 6 - 1
package.json

@@ -16,6 +16,7 @@
     "postinstall": "simple-git-hooks",
     "format": "prettier --write --cache .",
     "lint": "eslint --cache .",
+    "lint:fix": "eslint --ext .vue,.ts,.js --fix --cache .",
     "dev:doc": "pnpm --filter docs run dev",
     "build:doc": "pnpm --filter docs run build",
     "dev:decrypt": "pnpm --filter decrypt-js run dev",
@@ -49,7 +50,11 @@
     "simple-git-hooks": "^2.11.1",
     "typescript": "^5.0.2",
     "vite": "^4.3.9",
-    "vite-plugin-html-redirect": "^1.0.4"
+    "vite-plugin-html-redirect": "^1.0.4",
+    "eslint": "^8.5.0",
+    "@antfu/eslint-config": "^2.25.1",
+    "eslint-plugin-format": "^0.1.2",
+    "@unocss/eslint-plugin": "^0.61.9"
   },
   "engines": {
     "node": ">=16",

+ 51 - 13
pnpm-lock.yaml

@@ -24,12 +24,21 @@ importers:
       '@babel/plugin-proposal-optional-chaining':
         specifier: ^7.21.0
         version: 7.21.0(@babel/core@7.24.0)
+      '@vue/eslint-config-prettier':
+        specifier: ^7.0.0
+        version: 7.0.0(eslint@8.57.0)(prettier@3.1.0)
       colorette:
         specifier: ^2.0.20
         version: 2.0.20
       cross-env:
         specifier: ^7.0.3
         version: 7.0.3
+      eslint:
+        specifier: ^8.5.0
+        version: 8.57.0
+      eslint-plugin-vue:
+        specifier: ^9.0.0
+        version: 9.22.0(eslint@8.57.0)
       execa:
         specifier: ^7.1.1
         version: 7.1.1
@@ -4785,7 +4794,7 @@ packages:
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     dependencies:
       '@typescript-eslint/types': 5.62.0
-      eslint-visitor-keys: 3.4.1
+      eslint-visitor-keys: 3.4.3
     dev: true
 
   /@ungap/structured-clone@1.2.0:
@@ -6227,6 +6236,18 @@ packages:
       prettier: 2.5.1
     dev: true
 
+  /@vue/eslint-config-prettier@7.0.0(eslint@8.57.0)(prettier@3.1.0):
+    resolution: {integrity: sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==}
+    peerDependencies:
+      eslint: '>= 7.28.0'
+      prettier: '>= 2.0.0'
+    dependencies:
+      eslint: 8.57.0
+      eslint-config-prettier: 8.10.0(eslint@8.57.0)
+      eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@3.1.0)
+      prettier: 3.1.0
+    dev: true
+
   /@vue/eslint-config-standard@6.1.0(@vue/cli-service@5.0.1)(eslint-plugin-import@2.25.3)(eslint-plugin-node@11.1.0)(eslint-plugin-promise@5.1.0)(eslint-plugin-vue@8.0.3)(eslint@7.32.0)(webpack@5.88.2):
     resolution: {integrity: sha512-9+hrEyflDzsGdlBDl9jPV5DIYUx1TOU5OSQqRDKCrNumrxRj5HRWKuk+ocXWnha6uoNRtLC24mY7d/MwqvBCNw==}
     peerDependencies:
@@ -9369,6 +9390,23 @@ packages:
       prettier-linter-helpers: 1.0.0
     dev: true
 
+  /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@3.1.0):
+    resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
+    engines: {node: '>=12.0.0'}
+    peerDependencies:
+      eslint: '>=7.28.0'
+      eslint-config-prettier: '*'
+      prettier: '>=2.0.0'
+    peerDependenciesMeta:
+      eslint-config-prettier:
+        optional: true
+    dependencies:
+      eslint: 8.57.0
+      eslint-config-prettier: 8.10.0(eslint@8.57.0)
+      prettier: 3.1.0
+      prettier-linter-helpers: 1.0.0
+    dev: true
+
   /eslint-plugin-promise@5.1.0(eslint@7.32.0):
     resolution: {integrity: sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==}
     engines: {node: ^10.12.0 || >=12.0.0}
@@ -9745,7 +9783,7 @@ packages:
       ajv: 6.12.6
       chalk: 4.1.2
       cross-spawn: 7.0.3
-      debug: 4.3.4
+      debug: 4.3.6
       doctrine: 3.0.0
       escape-string-regexp: 4.0.0
       eslint-scope: 7.2.2
@@ -12885,7 +12923,7 @@ packages:
       postcss: ^8.2.2
     dependencies:
       postcss: 8.4.35
-      postcss-selector-parser: 6.0.13
+      postcss-selector-parser: 6.0.15
       postcss-value-parser: 4.2.0
     dev: true
 
@@ -12984,7 +13022,7 @@ packages:
       caniuse-api: 3.0.0
       cssnano-utils: 3.1.0(postcss@8.4.35)
       postcss: 8.4.35
-      postcss-selector-parser: 6.0.13
+      postcss-selector-parser: 6.0.15
     dev: true
 
   /postcss-minify-font-values@5.1.0(postcss@8.4.35):
@@ -13028,7 +13066,7 @@ packages:
       postcss: ^8.2.15
     dependencies:
       postcss: 8.4.35
-      postcss-selector-parser: 6.0.13
+      postcss-selector-parser: 6.0.15
     dev: true
 
   /postcss-modules-extract-imports@3.0.0(postcss@8.4.35):
@@ -13048,7 +13086,7 @@ packages:
     dependencies:
       icss-utils: 5.1.0(postcss@8.4.35)
       postcss: 8.4.35
-      postcss-selector-parser: 6.0.13
+      postcss-selector-parser: 6.0.15
       postcss-value-parser: 4.2.0
     dev: true
 
@@ -13059,7 +13097,7 @@ packages:
       postcss: ^8.1.0
     dependencies:
       postcss: 8.4.35
-      postcss-selector-parser: 6.0.13
+      postcss-selector-parser: 6.0.15
     dev: true
 
   /postcss-modules-values@4.0.0(postcss@8.4.35):
@@ -13236,7 +13274,7 @@ packages:
       postcss: ^8.2.15
     dependencies:
       postcss: 8.4.35
-      postcss-selector-parser: 6.0.13
+      postcss-selector-parser: 6.0.15
     dev: true
 
   /postcss-value-parser@4.2.0:
@@ -14548,7 +14586,7 @@ packages:
     dependencies:
       browserslist: 4.23.0
       postcss: 8.4.35
-      postcss-selector-parser: 6.0.13
+      postcss-selector-parser: 6.0.15
     dev: true
 
   /supports-color@2.0.0:
@@ -16138,8 +16176,8 @@ packages:
     dependencies:
       debug: 4.3.6
       eslint: 8.37.0
-      eslint-scope: 7.2.1
-      eslint-visitor-keys: 3.4.1
+      eslint-scope: 7.2.2
+      eslint-visitor-keys: 3.4.3
       espree: 9.6.1
       esquery: 1.5.0
       lodash: 4.17.21
@@ -16156,8 +16194,8 @@ packages:
     dependencies:
       debug: 4.3.6
       eslint: 8.57.0
-      eslint-scope: 7.2.1
-      eslint-visitor-keys: 3.4.1
+      eslint-scope: 7.2.2
+      eslint-visitor-keys: 3.4.3
       espree: 9.6.1
       esquery: 1.5.0
       lodash: 4.17.21