Estoy tratando de crear un proyecto simple impulsado por SSR usando express + react. Para hacer esto, necesito ver simultáneamente los scripts de frontend y backend durante el desarrollo.
El objetivo aquí es usar rutas rápidas para apuntar a los componentes de la página de reacción. Ahora, tengo esto funcionando, pero tengo problemas con DX.
Aquí están los scripts de mi paquete:
"build:client": "esbuild src/index.js --bundle --outfile=public/bundle.js --loader:.js=jsx", "build:server": "esbuild src/server.jsx --bundle --outfile=public/server.js --platform=node", "build": "npm run build:client && npm run build:server", "start": "node ./public/server.js" Ahora bien, esto funciona si npm run build && npm run start , pero el problema es que no observa los cambios ni reconstruye el paquete frontend ni reinicia el servidor backend.
Ahora, si agrego --watch a los 2 scripts de compilación, solo comienza a ver el archivo index.js y no ejecuta los otros scripts.
Entonces, si agrego nodemon a mi secuencia de comandos de inicio, no importa porque esbuild no pasará la primera secuencia de comandos debido al observador.
¿Hay una forma más sencilla de hacer lo que estoy tratando de hacer aquí? También quiero agregar viento de cola a este proyecto una vez que lo resuelva, por lo que cualquier consejo al respecto también sería útil.
Sugeriría usar la interfaz JS para esbuild, es decir, escribir un pequeño script JS que requiera esbuild y ejecutarlo, y luego usar la versión funcional de https://esbuild.github.io/api/#watch . Algo como esto:
require('esbuild').build({ entryPoints: ['app.js'], outfile: 'out.js', bundle: true, watch: { onRebuild(error, result) { if (error) console.error('watch build failed:', error) else { console.log('watch build succeeded:', result) // HERE: somehow restart the server from here, eg, by sending a signal that you trap and react to inside the server. } }, }, }).then(result => { console.log('watching...') })