# RemoteBuildSystem **Repository Path**: deshuofa/remote-build-system ## Basic Information - **Project Name**: RemoteBuildSystem - **Description**: 远程编译 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-08-15 - **Last Updated**: 2026-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Remote Build System 使用文档 ## 📖 项目简介 Remote Build System 是一个**分布式前端编译系统**,通过将编译任务从低配机(主控端)分发到高配机(被控端)执行,解决本地开发热更新缓慢的问题。 ### 核心特性 - ✅ 支持 **Vue 2 / Vue 3**(含 Vapor Mode)、**React**、**SolidJS**、**Svelte** - ✅ 支持 **TypeScript**、**JavaScript**、**SCSS**、**Less** - ✅ 自动检测文件类型,智能分发到对应环境的被控端 - ✅ 多被控端负载均衡,并行编译 - ✅ 实时状态监控(CPU、内存、任务进度) - ✅ 跨平台支持(Windows / macOS / Linux) - ✅ Web 界面管理,操作简单直观 --- ## 🏗️ 系统架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 系统架构图 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ WebSocket ┌─────────────────────┐ │ │ │ 低配机 │ ◄──────────────► │ 高配机 (被控端) │ │ │ │ (主控端) │ 分发编译任务 │ Worker-1 │ │ │ │ │ 返回编译结果 │ Worker-2 │ │ │ │ ┌─────────┐ │ │ Worker-N │ │ │ │ │Vite插件 │ │ └─────────────────────┘ │ │ │ └─────────┘ │ │ │ │ │ Web 界面 │ │ │ ┌─────────┐ │ http://localhost:5173 │ │ │ │ Web界面 │ │ │ │ │ └─────────┘ │ │ │ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` | 组件 | 说明 | |------|------| | **主控端 (Master)** | 运行在开发机(低配机),提供 Web 界面、任务调度、被控端管理 | | **被控端 (Worker)** | 运行在高配机,接收编译任务并执行 | | **Vite 插件** | 集成到 Vite 项目中,拦截文件变更并发送到主控端 | | **Web 界面** | 实时查看被控端状态、任务进度、CPU/内存折线图 | --- ## 🚀 快速开始 ### 前置要求 | 依赖 | 版本要求 | |------|----------| | Node.js | >= 18.0.0 | | pnpm | >= 8.0.0(推荐)或 npm | | 操作系统 | Windows 10+ / macOS / Linux | ### 下载项目 ```bash git clone cd RemoteBuildSystem ``` ### 安装依赖 ```bash # 使用 pnpm(推荐) pnpm install # 或使用 npm npm install ``` --- ## 🔧 被控端配置(高配机) 被控端运行在高配机上,负责接收并执行编译任务。 ### 启动被控端 ```bash cd packages/worker # 启动服务(默认端口 3000) node src/gui/index.js start # 指定端口启动 node src/gui/index.js start --port 3001 ``` ### 被控端 CLI 命令 | 命令 | 说明 | |------|------| | `node src/gui/index.js start` | 启动被控端服务 | | `node src/gui/index.js start --port 3001` | 指定端口启动 | | `node src/gui/index.js stop` | 停止被控端服务 | | `node src/gui/index.js status` | 查看被控端状态 | | `node src/gui/index.js config` | 查看当前配置 | ### 被控端 Web 界面 启动后访问:`http://localhost:3000` 显示内容: - 已连接的主控端列表 - 各主控端的任务进度 - CPU / 内存使用率折线图 - 悬浮窗开关和透明度控制 --- ## 🖥️ 主控端配置(低配机) 主控端运行在开发机(低配机)上,负责调度和分发任务。 ### 启动主控端 ```bash cd packages/master # 启动服务(默认端口 5173) node src/gui/index.js start # 指定端口启动 node src/gui/index.js start --port 5174 ``` ### 主控端 CLI 命令 | 命令 | 说明 | |------|------| | `node src/gui/index.js start` | 启动主控端服务 | | `node src/gui/index.js start --port 5174` | 指定端口启动 | | `node src/gui/index.js stop` | 停止主控端服务 | | `node src/gui/index.js status` | 查看主控端状态 | | `node src/gui/index.js connect ws://IP:PORT` | 连接被控端 | | `node src/gui/index.js connect ws://IP:PORT -e vue3` | 指定环境连接 | | `node src/gui/index.js remove ` | 移除被控端 | | `node src/gui/index.js env ` | 设置被控端编译环境 | | `node src/gui/index.js config` | 查看配置 | | `node src/gui/index.js config -p 5174` | 修改端口 | ### 主控端 Web 界面 启动后访问:`http://localhost:5173` 功能: - 添加/移除被控端 - 设置每个被控端的编译环境 - 实时查看被控端状态(CPU/内存/任务进度) - CPU/内存折线图 - 按编译环境统计被控端数量 --- ## 🔌 Vite 插件集成 在 Vite 项目中安装插件,自动将编译任务分发到被控端。 ### 1. 安装插件 将 `vite-plugin-remote-build.js` 复制到项目根目录,或发布为 npm 包安装。 ### 2. 配置 Vite ```javascript // vite.config.js import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import remoteBuild from './vite-plugin-remote-build.js'; export default defineConfig({ plugins: [ remoteBuild({ // 主控端地址 masterHost: 'localhost', masterPort: 5173, // 是否启用远程编译 enabled: true, // 需要远程编译的文件类型 include: /\.(vue|jsx?|tsx?|svelte|mjs|cjs)$/, // 排除的文件 exclude: /node_modules/, // 主控端不可用时降级本地编译 fallbackLocal: true, // 默认编译环境 (vue2/vue3/react/solid/svelte/auto) env: 'auto', // 任务超时时间(毫秒) taskTimeout: 30000, // 是否启用缓存 enableCache: true, }), vue(), ], }); ``` ### 3. 环境变量控制 ```javascript remoteBuild({ masterHost: process.env.REMOTE_MASTER_HOST || 'localhost', masterPort: parseInt(process.env.REMOTE_MASTER_PORT) || 5173, enabled: process.env.REMOTE_BUILD !== 'false', fallbackLocal: process.env.REMOTE_FALLBACK !== 'false', }) ``` --- ## 📋 编译环境说明 ### 支持的环境类型 | 环境 | 说明 | 文件类型 | |------|------|----------| | `vue2` | Vue 2 | `.vue` | | `vue3` | Vue 3(含 Vapor Mode) | `.vue` | | `react` | React | `.jsx`, `.tsx` | | `solid` | SolidJS | `.jsx`, `.tsx` | | `svelte` | Svelte | `.svelte` | | `auto` | 自动检测 | 所有文件 | | `script` | 普通 JS/TS(esbuild 转译) | `.js`, `.ts`, `.mjs`, `.cjs` | | `style` | 样式文件(sass/less 编译) | `.scss`, `.sass`, `.less`, `.css` | ### 智能检测规则 | 检测项 | 识别规则 | |--------|----------| | Vue 3 | `