feat: 全新的 ESLint 配置
This commit is contained in:
parent
92d0778992
commit
c8571a5f55
@ -1,8 +0,0 @@
|
|||||||
# Eslint 会忽略的文件
|
|
||||||
|
|
||||||
.DS_Store
|
|
||||||
node_modules
|
|
||||||
dist
|
|
||||||
dist-ssr
|
|
||||||
*.local
|
|
||||||
.npmrc
|
|
@ -1,75 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
env: {
|
|
||||||
browser: true,
|
|
||||||
node: true,
|
|
||||||
es6: true
|
|
||||||
},
|
|
||||||
extends: [
|
|
||||||
"plugin:vue/vue3-essential",
|
|
||||||
"eslint:recommended",
|
|
||||||
"@vue/typescript/recommended",
|
|
||||||
"@vue/prettier",
|
|
||||||
"@vue/eslint-config-typescript"
|
|
||||||
],
|
|
||||||
parser: "vue-eslint-parser",
|
|
||||||
parserOptions: {
|
|
||||||
parser: "@typescript-eslint/parser",
|
|
||||||
ecmaVersion: 2020,
|
|
||||||
sourceType: "module",
|
|
||||||
jsxPragma: "React",
|
|
||||||
ecmaFeatures: {
|
|
||||||
jsx: true,
|
|
||||||
tsx: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
// TS
|
|
||||||
"@typescript-eslint/no-unused-expressions": "off",
|
|
||||||
"@typescript-eslint/no-explicit-any": "off",
|
|
||||||
"no-debugger": "off",
|
|
||||||
"@typescript-eslint/explicit-module-boundary-types": "off",
|
|
||||||
"@typescript-eslint/ban-types": "off",
|
|
||||||
"@typescript-eslint/ban-ts-comment": "off",
|
|
||||||
"@typescript-eslint/no-empty-function": "off",
|
|
||||||
"@typescript-eslint/no-non-null-assertion": "off",
|
|
||||||
"@typescript-eslint/no-unused-vars": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
argsIgnorePattern: "^_",
|
|
||||||
varsIgnorePattern: "^_"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"no-unused-vars": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
argsIgnorePattern: "^_",
|
|
||||||
varsIgnorePattern: "^_"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
// Vue
|
|
||||||
"vue/no-v-html": "off",
|
|
||||||
"vue/require-default-prop": "off",
|
|
||||||
"vue/require-explicit-emits": "off",
|
|
||||||
"vue/multi-word-component-names": "off",
|
|
||||||
"vue/html-self-closing": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
html: {
|
|
||||||
void: "always",
|
|
||||||
normal: "always",
|
|
||||||
component: "always"
|
|
||||||
},
|
|
||||||
svg: "always",
|
|
||||||
math: "always"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
// Prettier
|
|
||||||
"prettier/prettier": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
endOfLine: "auto"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
# Prettier 会忽略的文件
|
|
||||||
|
|
||||||
.DS_Store
|
|
||||||
node_modules
|
|
||||||
dist
|
|
||||||
dist-ssr
|
|
||||||
*.local
|
|
||||||
.npmrc
|
|
73
.vscode/settings.json
vendored
73
.vscode/settings.json
vendored
@ -1,31 +1,52 @@
|
|||||||
{
|
{
|
||||||
"typescript.tsdk": "node_modules/typescript/lib",
|
"typescript.tsdk": "node_modules/typescript/lib",
|
||||||
"prettier.enable": true,
|
|
||||||
|
// Disable the default formatter, use eslint instead
|
||||||
|
"prettier.enable": false,
|
||||||
|
"editor.formatOnSave": false,
|
||||||
|
|
||||||
|
// Auto fix
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll.eslint": "explicit"
|
"source.fixAll.eslint": "explicit",
|
||||||
|
"source.organizeImports": "never"
|
||||||
},
|
},
|
||||||
"[vue]": {
|
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
// Silent the stylistic rules in you IDE, but still auto fix them
|
||||||
},
|
"eslint.rules.customizations": [
|
||||||
"[javascript]": {
|
{ "rule": "style/*", "severity": "off", "fixable": true },
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
{ "rule": "format/*", "severity": "off", "fixable": true },
|
||||||
},
|
{ "rule": "*-indent", "severity": "off", "fixable": true },
|
||||||
"[typescript]": {
|
{ "rule": "*-spacing", "severity": "off", "fixable": true },
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
{ "rule": "*-spaces", "severity": "off", "fixable": true },
|
||||||
},
|
{ "rule": "*-order", "severity": "off", "fixable": true },
|
||||||
"[json]": {
|
{ "rule": "*-dangle", "severity": "off", "fixable": true },
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
{ "rule": "*-newline", "severity": "off", "fixable": true },
|
||||||
},
|
{ "rule": "*quotes", "severity": "off", "fixable": true },
|
||||||
"[jsonc]": {
|
{ "rule": "*semi", "severity": "off", "fixable": true }
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
],
|
||||||
},
|
|
||||||
"[html]": {
|
// Enable eslint for all supported languages
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"eslint.validate": [
|
||||||
},
|
"javascript",
|
||||||
"[css]": {
|
"javascriptreact",
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"typescript",
|
||||||
},
|
"typescriptreact",
|
||||||
"[scss]": {
|
"vue",
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"html",
|
||||||
}
|
"markdown",
|
||||||
|
"json",
|
||||||
|
"jsonc",
|
||||||
|
"yaml",
|
||||||
|
"toml",
|
||||||
|
"xml",
|
||||||
|
"gql",
|
||||||
|
"graphql",
|
||||||
|
"astro",
|
||||||
|
"svelte",
|
||||||
|
"css",
|
||||||
|
"less",
|
||||||
|
"scss",
|
||||||
|
"pcss",
|
||||||
|
"postcss"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
3
eslint.config.js
Normal file
3
eslint.config.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import antfu from '@antfu/eslint-config'
|
||||||
|
|
||||||
|
export default antfu()
|
57
package.json
57
package.json
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "v3-admin-vite",
|
"name": "v3-admin-vite",
|
||||||
|
"type": "module",
|
||||||
"version": "4.5.4",
|
"version": "4.5.4",
|
||||||
"description": "一个免费开源的中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus、Pinia 和 Vite 等主流技术",
|
"description": "一个免费开源的中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus、Pinia 和 Vite 等主流技术",
|
||||||
"author": {
|
"author": {
|
||||||
@ -7,20 +8,31 @@
|
|||||||
"email": "939630029@qq.com",
|
"email": "939630029@qq.com",
|
||||||
"url": "https://github.com/pany-ang"
|
"url": "https://github.com/pany-ang"
|
||||||
},
|
},
|
||||||
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/un-pany/v3-admin-vite.git"
|
"url": "https://github.com/un-pany/v3-admin-vite.git"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"keywords": [
|
||||||
|
"vue",
|
||||||
|
"vue3",
|
||||||
|
"admin",
|
||||||
|
"vue-admin",
|
||||||
|
"vue3-admin",
|
||||||
|
"vite",
|
||||||
|
"vite-admin",
|
||||||
|
"element-plus",
|
||||||
|
"element-plus-admin",
|
||||||
|
"ts",
|
||||||
|
"typescript"
|
||||||
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build:stage": "vue-tsc --noEmit && vite build --mode staging",
|
"build:stage": "vue-tsc --noEmit && vite build --mode staging",
|
||||||
"build:prod": "vue-tsc --noEmit && vite build",
|
"build:prod": "vue-tsc --noEmit && vite build",
|
||||||
"preview:stage": "pnpm build:stage && vite preview",
|
"preview:stage": "pnpm build:stage && vite preview",
|
||||||
"preview:prod": "pnpm build:prod && vite preview",
|
"preview:prod": "pnpm build:prod && vite preview",
|
||||||
"lint:eslint": "eslint --cache --max-warnings 0 \"{src,tests,types}/**/*.{vue,js,jsx,ts,tsx}\" --fix",
|
"lint": "eslint . --fix",
|
||||||
"lint:prettier": "prettier --write \"{src,tests,types}/**/*.{vue,js,jsx,ts,tsx,json,css,less,scss,html,md}\"",
|
|
||||||
"lint": "pnpm lint:eslint && pnpm lint:prettier",
|
|
||||||
"prepare": "husky",
|
"prepare": "husky",
|
||||||
"test": "vitest"
|
"test": "vitest"
|
||||||
},
|
},
|
||||||
@ -45,21 +57,16 @@
|
|||||||
"xe-utils": "3.5.31"
|
"xe-utils": "3.5.31"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@antfu/eslint-config": "3.9.1",
|
||||||
"@types/js-cookie": "3.0.6",
|
"@types/js-cookie": "3.0.6",
|
||||||
"@types/lodash-es": "4.17.12",
|
"@types/lodash-es": "4.17.12",
|
||||||
"@types/node": "22.9.0",
|
"@types/node": "22.9.0",
|
||||||
"@types/nprogress": "0.2.3",
|
"@types/nprogress": "0.2.3",
|
||||||
"@types/path-browserify": "1.0.3",
|
"@types/path-browserify": "1.0.3",
|
||||||
"@typescript-eslint/eslint-plugin": "8.14.0",
|
|
||||||
"@typescript-eslint/parser": "8.14.0",
|
|
||||||
"@vitejs/plugin-vue": "5.2.0",
|
"@vitejs/plugin-vue": "5.2.0",
|
||||||
"@vitejs/plugin-vue-jsx": "4.1.0",
|
"@vitejs/plugin-vue-jsx": "4.1.0",
|
||||||
"@vue/eslint-config-prettier": "9.0.0",
|
|
||||||
"@vue/eslint-config-typescript": "13.0.0",
|
|
||||||
"@vue/test-utils": "2.4.6",
|
"@vue/test-utils": "2.4.6",
|
||||||
"eslint": "8.57.1",
|
"eslint": "9.15.0",
|
||||||
"eslint-plugin-prettier": "5.2.1",
|
|
||||||
"eslint-plugin-vue": "9.31.0",
|
|
||||||
"husky": "9.1.6",
|
"husky": "9.1.6",
|
||||||
"jsdom": "25.0.1",
|
"jsdom": "25.0.1",
|
||||||
"lint-staged": "15.2.10",
|
"lint-staged": "15.2.10",
|
||||||
@ -71,33 +78,9 @@
|
|||||||
"vite-plugin-svg-icons": "2.0.1",
|
"vite-plugin-svg-icons": "2.0.1",
|
||||||
"vite-svg-loader": "5.1.0",
|
"vite-svg-loader": "5.1.0",
|
||||||
"vitest": "2.1.5",
|
"vitest": "2.1.5",
|
||||||
"vue-eslint-parser": "9.4.3",
|
|
||||||
"vue-tsc": "2.1.10"
|
"vue-tsc": "2.1.10"
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"*.{vue,js,jsx,ts,tsx}": [
|
"*": "eslint --fix"
|
||||||
"eslint --fix",
|
}
|
||||||
"prettier --write"
|
|
||||||
],
|
|
||||||
"*.{css,less,scss,html,md}": [
|
|
||||||
"prettier --write"
|
|
||||||
],
|
|
||||||
"package.json": [
|
|
||||||
"prettier --write"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"vue",
|
|
||||||
"vue3",
|
|
||||||
"admin",
|
|
||||||
"vue-admin",
|
|
||||||
"vue3-admin",
|
|
||||||
"vite",
|
|
||||||
"vite-admin",
|
|
||||||
"element-plus",
|
|
||||||
"element-plus-admin",
|
|
||||||
"ts",
|
|
||||||
"typescript"
|
|
||||||
],
|
|
||||||
"license": "MIT"
|
|
||||||
}
|
}
|
||||||
|
2095
pnpm-lock.yaml
generated
2095
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -1,22 +0,0 @@
|
|||||||
/**
|
|
||||||
* 修改配置后重启编辑器
|
|
||||||
* 配置项文档:https://prettier.io/docs/en/configuration.html
|
|
||||||
* @type {import("prettier").Config}
|
|
||||||
*/
|
|
||||||
|
|
||||||
export default {
|
|
||||||
/** 每一行的宽度 */
|
|
||||||
printWidth: 120,
|
|
||||||
/** 在对象中的括号之间是否用空格来间隔 */
|
|
||||||
bracketSpacing: true,
|
|
||||||
/** 箭头函数的参数无论有几个,都要括号包裹 */
|
|
||||||
arrowParens: "always",
|
|
||||||
/** 换行符的使用 */
|
|
||||||
endOfLine: "auto",
|
|
||||||
/** 是否采用单引号 */
|
|
||||||
singleQuote: false,
|
|
||||||
/** 对象或者数组的最后一个元素后面不要加逗号 */
|
|
||||||
trailingComma: "none",
|
|
||||||
/** 是否加分号 */
|
|
||||||
semi: false
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user