Template
1
0
mirror of https://github.com/un-pany/v3-admin-vite.git synced 2025-04-20 10:59:21 +08:00

feat: 全新的 ESLint 配置

This commit is contained in:
pany 2024-11-18 14:25:35 +08:00
parent 92d0778992
commit c8571a5f55
8 changed files with 1754 additions and 587 deletions

View File

@ -1,8 +0,0 @@
# Eslint 会忽略的文件
.DS_Store
node_modules
dist
dist-ssr
*.local
.npmrc

View File

@ -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"
}
]
}
}

View File

@ -1,8 +0,0 @@
# Prettier 会忽略的文件
.DS_Store
node_modules
dist
dist-ssr
*.local
.npmrc

73
.vscode/settings.json vendored
View File

@ -1,31 +1,52 @@
{
"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": {
"source.fixAll.eslint": "explicit"
"source.fixAll.eslint": "explicit",
"source.organizeImports": "never"
},
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
// 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",
"svelte",
"css",
"less",
"scss",
"pcss",
"postcss"
]
}

3
eslint.config.js Normal file
View File

@ -0,0 +1,3 @@
import antfu from '@antfu/eslint-config'
export default antfu()

View File

@ -1,5 +1,6 @@
{
"name": "v3-admin-vite",
"type": "module",
"version": "4.5.4",
"description": "一个免费开源的中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus、Pinia 和 Vite 等主流技术",
"author": {
@ -7,20 +8,31 @@
"email": "939630029@qq.com",
"url": "https://github.com/pany-ang"
},
"license": "MIT",
"repository": {
"type": "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": {
"dev": "vite",
"build:stage": "vue-tsc --noEmit && vite build --mode staging",
"build:prod": "vue-tsc --noEmit && vite build",
"preview:stage": "pnpm build:stage && 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:prettier": "prettier --write \"{src,tests,types}/**/*.{vue,js,jsx,ts,tsx,json,css,less,scss,html,md}\"",
"lint": "pnpm lint:eslint && pnpm lint:prettier",
"lint": "eslint . --fix",
"prepare": "husky",
"test": "vitest"
},
@ -45,21 +57,16 @@
"xe-utils": "3.5.31"
},
"devDependencies": {
"@antfu/eslint-config": "3.9.1",
"@types/js-cookie": "3.0.6",
"@types/lodash-es": "4.17.12",
"@types/node": "22.9.0",
"@types/nprogress": "0.2.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-jsx": "4.1.0",
"@vue/eslint-config-prettier": "9.0.0",
"@vue/eslint-config-typescript": "13.0.0",
"@vue/test-utils": "2.4.6",
"eslint": "8.57.1",
"eslint-plugin-prettier": "5.2.1",
"eslint-plugin-vue": "9.31.0",
"eslint": "9.15.0",
"husky": "9.1.6",
"jsdom": "25.0.1",
"lint-staged": "15.2.10",
@ -71,33 +78,9 @@
"vite-plugin-svg-icons": "2.0.1",
"vite-svg-loader": "5.1.0",
"vitest": "2.1.5",
"vue-eslint-parser": "9.4.3",
"vue-tsc": "2.1.10"
},
"lint-staged": {
"*.{vue,js,jsx,ts,tsx}": [
"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"
"*": "eslint --fix"
}
}

2095
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -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
}