build(clinical-web): 添加 ESLint 和 Prettier 配置

This commit is contained in:
yelan
2026-08-27 10:51:40 +08:00
parent 3f27d4dd3a
commit 01827bf304
18 changed files with 2784 additions and 34 deletions

View File

@@ -0,0 +1,7 @@
node_modules
dist
coverage
package-lock.json
public
*.min.*
*.tsbuildinfo

View File

@@ -0,0 +1,10 @@
{
"semi": false,
"singleQuote": true,
"quoteProps": "as-needed",
"trailingComma": "all",
"printWidth": 100,
"tabWidth": 2,
"useTabs": false,
"endOfLine": "lf"
}

View File

@@ -0,0 +1,52 @@
import eslint from '@eslint/js'
import eslintConfigPrettier from 'eslint-config-prettier'
import eslintPluginVue from 'eslint-plugin-vue'
import globals from 'globals'
import tseslint from 'typescript-eslint'
export default tseslint.config(
{
ignores: ['**/dist/**', '**/node_modules/**', '**/coverage/**', '**/*.d.ts'],
},
eslint.configs.recommended,
...tseslint.configs.recommended,
...eslintPluginVue.configs['flat/recommended'],
{
files: ['**/*.{ts,tsx,vue}'],
languageOptions: {
globals: globals.browser,
parserOptions: {
parser: tseslint.parser,
},
},
},
{
files: ['**/*.{js,mjs,cjs}'],
languageOptions: {
globals: globals.node,
},
},
{
files: ['vite.config.ts', '*.config.{js,mjs,cjs,ts}'],
languageOptions: {
globals: globals.node,
},
},
{
files: ['**/*.vue'],
languageOptions: {
parserOptions: {
parser: tseslint.parser,
},
},
rules: {
'vue/multi-word-component-names': 'off',
},
},
{
rules: {
'@typescript-eslint/no-explicit-any': 'warn',
},
},
eslintConfigPrettier,
)

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,11 @@
"scripts": {
"dev": "vite",
"build": "vue-tsc -b && vite build",
"preview": "vite preview"
"preview": "vite preview",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "prettier . --write",
"format:check": "prettier . --check"
},
"dependencies": {
"axios": "^1.20.0",
@@ -14,10 +18,17 @@
"vue-router": "^5.2.0"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@types/node": "^24.13.3",
"@vitejs/plugin-vue": "^6.0.8",
"@vue/tsconfig": "^0.9.1",
"eslint": "^10.9.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-vue": "^10.10.0",
"globals": "^17.11.0",
"prettier": "^3.9.6",
"typescript": "~6.0.2",
"typescript-eslint": "^8.68.0",
"vite": "^8.2.2",
"vue-tsc": "^3.3.11"
}

View File

@@ -18,9 +18,7 @@ const count = ref(0)
<h1>Get started</h1>
<p>Edit <code>src/App.vue</code> and save to test <code>HMR</code></p>
</div>
<button type="button" class="counter" @click="count++">
Count is {{ count }}
</button>
<button type="button" class="counter" @click="count++">Count is {{ count }}</button>
</section>
<div class="ticks"></div>

View File

@@ -8,8 +8,7 @@
--accent-bg: rgba(170, 59, 255, 0.1);
--accent-border: rgba(170, 59, 255, 0.5);
--social-bg: rgba(244, 243, 236, 0.5);
--shadow:
rgba(0, 0, 0, 0.1) 0 10px 15px -3px, rgba(0, 0, 0, 0.05) 0 4px 6px -2px;
--shadow: rgba(0, 0, 0, 0.1) 0 10px 15px -3px, rgba(0, 0, 0, 0.05) 0 4px 6px -2px;
--sans: system-ui, 'Segoe UI', Roboto, sans-serif;
--heading: system-ui, 'Segoe UI', Roboto, sans-serif;
@@ -41,8 +40,7 @@
--accent-bg: rgba(192, 132, 252, 0.15);
--accent-border: rgba(192, 132, 252, 0.5);
--social-bg: rgba(47, 48, 58, 0.5);
--shadow:
rgba(0, 0, 0, 0.4) 0 10px 15px -3px, rgba(0, 0, 0, 0.25) 0 4px 6px -2px;
--shadow: rgba(0, 0, 0, 0.4) 0 10px 15px -3px, rgba(0, 0, 0, 0.25) 0 4px 6px -2px;
}
#social .button-icon {
@@ -142,8 +140,7 @@ code {
z-index: 1;
top: 34px;
height: 28px;
transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg)
scale(1.4);
transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg) scale(1.4);
}
.vite {
@@ -151,8 +148,7 @@ code {
top: 107px;
height: 26px;
width: auto;
transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg)
scale(0.8);
transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg) scale(0.8);
}
}

View File

@@ -1,7 +1,4 @@
{
"files": [],
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
]
"references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }]
}