From c4df531cef3fcea15b7e46a348f605b2af4a3caa Mon Sep 17 00:00:00 2001 From: ekko Date: Sat, 11 Apr 2026 16:08:58 +0800 Subject: [PATCH] fix: use Vite API directly for global CLI Spawn-based approach fails on global install because node_modules is hoisted. Use programmatic Vite API instead. Move vite, plugin-vue, and sass to dependencies so they're available at runtime. Co-Authored-By: Claude Opus 4.6 --- bin/hermes-web-ui.mjs | 30 ++++++++++++++++++++++-------- package.json | 6 +++--- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/bin/hermes-web-ui.mjs b/bin/hermes-web-ui.mjs index c8075a7..13e0275 100755 --- a/bin/hermes-web-ui.mjs +++ b/bin/hermes-web-ui.mjs @@ -1,22 +1,36 @@ #!/usr/bin/env node -import { spawn } from 'child_process' import { resolve, dirname } from 'path' import { fileURLToPath } from 'url' const __dirname = dirname(fileURLToPath(import.meta.url)) const projectRoot = resolve(__dirname, '..') -const args = process.argv.slice(2) -const command = args[0] +const command = process.argv[2] if (!command || command === 'start' || command === 'dev') { - const viteBin = resolve(projectRoot, 'node_modules/.bin/vite') - spawn(viteBin, ['--host', '--port', '8648'], { stdio: 'inherit', cwd: projectRoot }) + const { createServer } = await import('vite') + const vue = await import('@vitejs/plugin-vue') + const server = await createServer({ + root: projectRoot, + configFile: resolve(projectRoot, 'vite.config.ts'), + server: { + host: true, + port: 8648, + }, + plugins: [vue.default()], + }) + await server.listen() + server.printUrls() } else if (command === 'build') { - const viteBin = resolve(projectRoot, 'node_modules/.bin/vite') - spawn(viteBin, ['build'], { stdio: 'inherit', cwd: projectRoot }) + const { build } = await import('vite') + const vue = await import('@vitejs/plugin-vue') + await build({ + root: projectRoot, + configFile: resolve(projectRoot, 'vite.config.ts'), + plugins: [vue.default()], + }) } else { - console.log(`Usage: hermes-web-ui [command]`) + console.log('Usage: hermes-web-ui [command]') console.log() console.log('Commands:') console.log(' start Start dev server (default)') diff --git a/package.json b/package.json index 1ac9b61..3be6284 100644 --- a/package.json +++ b/package.json @@ -24,21 +24,21 @@ "package.json" ], "dependencies": { + "@vitejs/plugin-vue": "^6.0.5", "highlight.js": "^11.11.1", "markdown-it": "^14.1.1", "naive-ui": "^2.44.1", "pinia": "^3.0.4", + "sass": "^1.99.0", + "vite": "^8.0.4", "vue": "^3.5.32", "vue-router": "^4.6.4" }, "devDependencies": { "@types/markdown-it": "^14.1.2", "@types/node": "^24.12.2", - "@vitejs/plugin-vue": "^6.0.5", "@vue/tsconfig": "^0.9.1", - "sass": "^1.99.0", "typescript": "~6.0.2", - "vite": "^8.0.4", "vue-tsc": "^3.2.6" } }