diff --git a/Typescript/集成eslint和prettier.patch b/Typescript/集成eslint和prettier.patch new file mode 100644 index 0000000..9129787 --- /dev/null +++ b/Typescript/集成eslint和prettier.patch @@ -0,0 +1,112 @@ +diff --git a/.husky/pre-commit b/.husky/pre-commit +new file mode 100644 +index 0000000..c2bc65e +--- /dev/null ++++ b/.husky/pre-commit +@@ -0,0 +1,2 @@ ++pnpm run compile ++npx --no-install lint-staged +\ No newline at end of file +diff --git a/.prettierrc.cjs b/.prettierrc.cjs +new file mode 100644 +index 0000000..cedeaa0 +--- /dev/null ++++ b/.prettierrc.cjs +@@ -0,0 +1,18 @@ ++module.exports = { ++ // 字符串使用单引号 ++ singleQuote: true, ++ // 大括号内的首尾需要空格 ++ bracketSpacing: true, ++ // 末尾不需要逗号 ++ trailingComma: 'none', ++ // 箭头函数参数括号 ++ arrowParens: 'avoid', ++ // 在jsx中把'>' 是否单独放一行 ++ jsxBracketSameLine: true, ++ // 使用默认的折行标准 ++ proseWrap: 'preserve', ++ // 根据显示样式决定 html 要不要折行 ++ htmlWhitespaceSensitivity: 'css', ++ // 换行符使用 crlf/lf/auto ++ endOfLine: 'auto' ++} +\ No newline at end of file +diff --git a/eslint.config.mjs b/eslint.config.mjs +new file mode 100644 +index 0000000..a7be3cf +--- /dev/null ++++ b/eslint.config.mjs +@@ -0,0 +1,18 @@ ++// @ts-check ++ ++import eslint from '@eslint/js'; ++import tseslint from 'typescript-eslint'; ++import prettier from 'eslint-plugin-prettier'; ++ ++export default tseslint.config( ++ eslint.configs.recommended, ++ tseslint.configs.recommended, ++ { ++ plugins: { ++ prettier, ++ }, ++ rules: { ++ 'prettier/prettier': 'error', ++ }, ++ } ++); +\ No newline at end of file +diff --git a/package.json b/package.json +index 9d799c6..30b1f40 100644 +--- a/package.json ++++ b/package.json +@@ -10,7 +10,9 @@ + "compile": "tsc --noEmit", + "tauri": "tauri", + "tauri:dev": "tauri dev", +- "tauri:build": "tauri build" ++ "tauri:build": "tauri build", ++ "format": "prettier --write \"{src,tests}/**/*.{js,jsx,ts,tsx}\"", ++ "prepare": "husky install" + }, + "dependencies": { + "@emotion/react": "^11.14.0", +@@ -42,6 +44,7 @@ + "zustand": "^5.0.3" + }, + "devDependencies": { ++ "@eslint/js": "^9.23.0", + "@tauri-apps/cli": "^2", + "@types/node": "^22.13.1", + "@types/react": "^18.3.1", +@@ -53,8 +56,14 @@ + "@unocss/preset-web-fonts": "^65.4.3", + "@unocss/reset": "^65.4.3", + "@vitejs/plugin-react": "^4.3.4", ++ "eslint": "^9.23.0", ++ "eslint-plugin-prettier": "^5.2.6", ++ "husky": "^9.1.7", ++ "lint-staged": "^15.5.0", ++ "prettier": "^3.5.3", + "tsx": "^4.19.3", +- "typescript": "~5.6.2", ++ "typescript": "~5.6.3", ++ "typescript-eslint": "^8.29.0", + "unocss": "^65.4.3", + "vite": "^6.1.0", + "vite-plugin-compression": "^0.5.1" +@@ -63,5 +72,11 @@ + "onlyBuiltDependencies": [ + "esbuild" + ] ++ }, ++ "lint-staged": { ++ "*.{ts,tsx}": [ ++ "eslint --fix", ++ "prettier --write" ++ ] + } +-} ++} +\ No newline at end of file