From 3ae318e27671383e37f87b62bcdcfbf1f626867f Mon Sep 17 00:00:00 2001 From: JINGYJ <1458671527@qq.com> Date: Wed, 2 Jul 2025 13:01:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9F=BA=E7=A1=80=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 9 + .eslintignore | 5 + .eslintrc.cjs | 41 + .gitignore | 6 + .npmrc | 3 + .prettierignore | 6 + .prettierrc.yaml | 4 + .vscode/extensions.json | 3 + .vscode/launch.json | 39 + .vscode/settings.json | 17 + README.md | 76 + build/electron-vite-vue-ts.png | Bin 0 -> 625554 bytes build/entitlements.mac.plist | 12 + build/icon.icns | Bin 0 -> 85649 bytes build/icon.ico | Bin 0 -> 123545 bytes build/icon.png | Bin 0 -> 35949 bytes electron-builder.yml | 45 + electron.vite.config.ts | 22 + package-lock.json | 6665 ++++++++++++++++++++++ package.json | 81 + resources/icon.png | Bin 0 -> 35949 bytes src/main/index.ts | 74 + src/preload/index.d.ts | 8 + src/preload/index.ts | 22 + src/renderer/index.html | 17 + src/renderer/src/App.vue | 6 + src/renderer/src/assets/base.css | 67 + src/renderer/src/assets/electron.svg | 10 + src/renderer/src/assets/main.css | 171 + src/renderer/src/assets/wavy-lines.svg | 25 + src/renderer/src/components/Versions.vue | 13 + src/renderer/src/env.d.ts | 8 + src/renderer/src/main.ts | 8 + src/renderer/src/router/index.ts | 6 + src/renderer/src/store/index.ts | 13 + src/renderer/src/utils/request.ts | 0 src/renderer/src/views/Home/index.vue | 3 + src/renderer/src/views/Login.vue | 3 + tsconfig.json | 26 + tsconfig.node.json | 8 + tsconfig.web.json | 33 + 41 files changed, 7555 insertions(+) create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc.yaml create mode 100644 .vscode/extensions.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 build/electron-vite-vue-ts.png create mode 100644 build/entitlements.mac.plist create mode 100644 build/icon.icns create mode 100644 build/icon.ico create mode 100644 build/icon.png create mode 100644 electron-builder.yml create mode 100644 electron.vite.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 resources/icon.png create mode 100644 src/main/index.ts create mode 100644 src/preload/index.d.ts create mode 100644 src/preload/index.ts create mode 100644 src/renderer/index.html create mode 100644 src/renderer/src/App.vue create mode 100644 src/renderer/src/assets/base.css create mode 100644 src/renderer/src/assets/electron.svg create mode 100644 src/renderer/src/assets/main.css create mode 100644 src/renderer/src/assets/wavy-lines.svg create mode 100644 src/renderer/src/components/Versions.vue create mode 100644 src/renderer/src/env.d.ts create mode 100644 src/renderer/src/main.ts create mode 100644 src/renderer/src/router/index.ts create mode 100644 src/renderer/src/store/index.ts create mode 100644 src/renderer/src/utils/request.ts create mode 100644 src/renderer/src/views/Home/index.vue create mode 100644 src/renderer/src/views/Login.vue create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 tsconfig.web.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3dce414 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..53dc8b9 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +node_modules +dist +release +out +.gitignore diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..9693e79 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,41 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + extends: [ + 'eslint:recommended', + 'plugin:vue/vue3-recommended', + '@electron-toolkit', + '@electron-toolkit/eslint-config-ts/eslint-recommended', + '@vue/eslint-config-typescript/recommended', + '@vue/eslint-config-prettier' + ], + rules: { + 'vue/require-default-prop': 'off', + 'vue/multi-word-component-names': 'off', + // 新增:强制使用 Unix 风格的换行符 (LF) + 'linebreak-style': ['error', 'unix', 'windows'], + + // 新增:忽略 Prettier 与 ESLint 可能存在的格式冲突 + 'prettier/prettier': [ + 'error', + { + endOfLine: 'lf', // 确保 Prettier 使用 LF 换行符 + semi: false, // 根据你的代码风格调整 + singleQuote: true // 根据你的代码风格调整 + } + ] + }, + // 新增:环境配置,根据你的项目调整 + env: { + browser: true, + node: true, + es6: true + }, + + // 新增:如果使用 TypeScript,确保正确解析类型 + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module' + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..75bfa0b --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules +dist +release +out +.DS_Store +*.log* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..2ced952 --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +electron_mirror=https://npmmirror.com/mirrors/electron/ +electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/ +shamefully-hoist=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..9c6b791 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +out +dist +pnpm-lock.yaml +LICENSE.md +tsconfig.json +tsconfig.*.json diff --git a/.prettierrc.yaml b/.prettierrc.yaml new file mode 100644 index 0000000..35893b3 --- /dev/null +++ b/.prettierrc.yaml @@ -0,0 +1,4 @@ +singleQuote: true +semi: false +printWidth: 100 +trailingComma: none diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..940260d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["dbaeumer.vscode-eslint"] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..0b6b9a6 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,39 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug Main Process", + "type": "node", + "request": "launch", + "cwd": "${workspaceRoot}", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-vite", + "windows": { + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-vite.cmd" + }, + "runtimeArgs": ["--sourcemap"], + "env": { + "REMOTE_DEBUGGING_PORT": "9222" + } + }, + { + "name": "Debug Renderer Process", + "port": 9222, + "request": "attach", + "type": "chrome", + "webRoot": "${workspaceFolder}/src/renderer", + "timeout": 60000, + "presentation": { + "hidden": true + } + } + ], + "compounds": [ + { + "name": "Debug All", + "configurations": ["Debug Main Process", "Debug Renderer Process"], + "presentation": { + "order": 1 + } + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..82a5ac6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,17 @@ +{ + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + }, + "eslint.validate": ["javascript", "typescript", "vue"] +} diff --git a/README.md b/README.md index e69de29..7a556a5 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,76 @@ +
An Electron application with Vue3 and TypeScript
+ +
+
+
+
+
+
+
+
+
+
%<
z>IgINVk>VtX3B>8ycQv$byc@x9k^=((@IMt*WhmvMujcBRHnf^MSM9zC-*e!*`oZ>
z%ij5vwvL$o9PX fcx7u>BO=Xk7u1nG1V0d?Ctc*3+PygX)wx4mAnz3ulz$uaH?p@#$wsajyh&Ggxuv
zETJ?F75N!8H9|ECP yBXXY!OMH*3;IspI-OHq15U{6G(D~Ehh-fZJoylB95
zouCTV4tq}8V@$9t$XeP~5!|t31}sei0LYd76>I6yy|DbOv)+FvftA`S9lsq%k6*CR
zBuDYhHl?$JN9|%$YPpjQaDr&0L_35jq1kM+4f`Zdz5ySo_3s~>mEnc6Kp;&%9RyWb
zlJRVdiKRlo+o&P=F0i$<*G7IRfS1>cP@
zx~2+G4&ClMYWk~^Qp2&zWRWdOv6-JsH0uA^lbVCDEPDm&=TB`-QFp7Dj)d&eQDvFY
zx{Mo83iOgZSJWj+X3?GtP;8
EbRe_jl@?Uou0JVt!M<*qvM(3j+{B9iu78?b5s^ub
z%osGVB0J=w(-+kUFs)ZZ5hj``Y&2fDT6HmzA)L(yA48g=h9YU*7h`kTI1`qdHa|kN
zT)CQD?loiCw_9M2heMDN1$7YXvlyvHIBW;YY0|=G-VaK_
zZ`