fix(dev): tsx watch not detecting workspace package changes

tsx watch's symlink-based file watching doesn't trigger on changes to
pnpm workspace packages (tsx#221). Add --include flags for packages/core
and packages/node-runtime source directories to both dev:serve script
and vite.web.config.mts auto-serve plugin. Extract long command to
scripts/dev-serve.sh for cleaner package.json.
This commit is contained in:
digua committed 2026-05-18 22:43:00 +08:00
1 parent cdb2bfea7c
commit e5dc1fcb9b
3 files changed
+30 -3

No files matched your search

+1 -1
View File
@@ -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",
+10
View File
@@ -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 "$@"
+19 -2
View File
@@ -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)], {
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()