From fb66af91540eb5fcd2a546c9bb3f6fe6ed1752be Mon Sep 17 00:00:00 2001 From: ViperEkura <3081035982@qq.com> Date: Tue, 24 Mar 2026 13:43:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E7=AB=AF=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +++++--------- backend/run.py | 5 +++-- frontend/package-lock.json | 21 +++++++++++++++++++++ frontend/package.json | 5 +++-- frontend/vite.config.js | 15 +++++++++++++-- 5 files changed, 45 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 33dbff2..df0b6d5 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,6 @@ ### 1. 克隆并安装后端 ```bash -cd Nano-Claw - -# 创建虚拟环境 -python -m venv .venv -source .venv/bin/activate # Windows: .venv\Scripts\activate - -# 安装依赖 pip install -e . ``` @@ -23,6 +16,10 @@ pip install -e . 创建并编辑 `config.yml`,填入你的信息: ```yaml +# Port +backend_port: 3000 +frontend_port: 4000 + # GLM API api_key: your-api-key-here api_url: https://open.bigmodel.cn/api/paas/v4/chat/completions @@ -45,7 +42,7 @@ mysql -u root -p -e "CREATE DATABASE glm_chat CHARACTER SET utf8mb4 COLLATE utf8 ### 4. 启动后端 ```bash -flask --app backend run --port 5000 +python -m backend.run ``` ### 5. 启动前端 @@ -56,7 +53,6 @@ npm install npm run dev ``` -打开 http://localhost:3000 即可使用。 ## 项目结构 diff --git a/backend/run.py b/backend/run.py index 2d1989c..b381732 100644 --- a/backend/run.py +++ b/backend/run.py @@ -1,6 +1,7 @@ -from backend import create_app +from backend import create_app, load_config app = create_app() if __name__ == "__main__": - app.run(debug=True, port=5000) + cfg = load_config() + app.run(debug=True, port=cfg.get("backend_port")) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1587aaf..b663d71 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14,6 +14,7 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.0", + "js-yaml": "^4.1.1", "vite": "^6.0.0" } }, @@ -982,6 +983,13 @@ "integrity": "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==", "license": "MIT" }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz", @@ -1090,6 +1098,19 @@ "node": ">=12.0.0" } }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", diff --git a/frontend/package.json b/frontend/package.json index de93ba8..89c5142 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,12 +9,13 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.4.0", + "highlight.js": "^11.10.0", "marked": "^15.0.0", - "highlight.js": "^11.10.0" + "vue": "^3.4.0" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.0", + "js-yaml": "^4.1.1", "vite": "^6.0.0" } } diff --git a/frontend/vite.config.js b/frontend/vite.config.js index afa7734..cff26f4 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.js @@ -1,13 +1,24 @@ import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' +import fs from 'fs' +import yaml from 'js-yaml' +import { fileURLToPath } from 'url' +import { dirname, resolve } from 'path' + +const __filename = fileURLToPath(import.meta.url) +const __dirname = dirname(__filename) + +const config = yaml.load( + fs.readFileSync(resolve(__dirname, '..', 'config.yml'), 'utf-8') +) export default defineConfig({ plugins: [vue()], server: { - port: 3000, + port: config.frontend_port, proxy: { '/api': { - target: 'http://localhost:5000', + target: `http://localhost:${config.backend_port}`, changeOrigin: true, }, },