diff --git a/package.json b/package.json index be0935d3..02e433bd 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "build:linux": "pnpm run build && electron-builder --linux --config electron-builder.yml -p never", "dev:app": "vite --config vite.web.config.mts", "ensure:server-native": "pnpm --filter chatlab run ensure-native", - "dev:serve": "pnpm run ensure:server-native && tsx watch packages/server/src/cli.ts serve", + "dev:serve": "bash scripts/dev-serve.sh", "dev:web": "pnpm run ensure:server-native && CHATLAB_AUTO_SERVE=1 vite --config vite.web.config.mts", "build:web": "vite build --config vite.web.config.mts", "type-check:web": "vue-tsc --noEmit -p tsconfig.web.json", diff --git a/scripts/dev-serve.sh b/scripts/dev-serve.sh new file mode 100755 index 00000000..e0140a64 --- /dev/null +++ b/scripts/dev-serve.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Dev server with tsx watch — monitors workspace packages for changes. +set -e + +pnpm run ensure:server-native + +exec tsx watch \ + --include 'packages/core/src/**' \ + --include 'packages/node-runtime/src/**' \ + packages/server/src/cli.ts serve "$@" diff --git a/vite.web.config.mts b/vite.web.config.mts index 09733e75..6faea65f 100644 --- a/vite.web.config.mts +++ b/vite.web.config.mts @@ -50,11 +50,28 @@ function chatlabServePlugin(): Plugin { } const serverDir = resolve(__dirname, 'packages/server') - serverProcess = spawn('npx', ['tsx', 'watch', 'src/cli.ts', 'serve', '--port', String(BACKEND_PORT)], { - cwd: serverDir, - stdio: ['ignore', 'pipe', 'pipe'], - env: { ...process.env }, - }) + const coreDir = resolve(__dirname, 'packages/core/src') + const runtimeDir = resolve(__dirname, 'packages/node-runtime/src') + serverProcess = spawn( + 'npx', + [ + 'tsx', + 'watch', + '--include', + `${coreDir}/**`, + '--include', + `${runtimeDir}/**`, + 'src/cli.ts', + 'serve', + '--port', + String(BACKEND_PORT), + ], + { + cwd: serverDir, + stdio: ['ignore', 'pipe', 'pipe'], + env: { ...process.env }, + } + ) serverProcess.stdout?.on('data', (data: Buffer) => { const line = data.toString().trim()