Las plantillas de Handlebars no son actualizadas durante la compilación en la carpeta .build.
Situación
En estos momentos estoy desarrollando un proyecto sin servidor que renderiza algunas plantillas HTML (.hbs) con NestJS y Handlebars.
1. Cuando ejecuto por primera vez nest build && sls offline start
, puedo probar los endpoints de mi aplicación en modo offline con postman => las plantillas se renderizan perfectamente.
2. Pero si ahora actualizo algo dentro de una plantilla .hbs y luego detengo/reinicio
el servidor en modo offline, los cambios en mi plantilla no se tienen en cuenta cuando pruebo mis endpoints (es como si mis plantillas solo se compilaran una vez).
3. Si cambio algo dentro de un archivo .css y luego detengo/reinicio
el servidor en modo offline, los archivos compilados parecen ser reemplazados según lo esperado y puedo ver el nuevo CSS en las plantillas renderizadas.
Actualmente, tengo que eliminar la carpeta .build/ y luego detener/reiniciar
el servidor en modo offline para ver los cambios de mis plantillas en el HTML renderizado cuando pruebo mis endpoints…
¿Cómo puedo evitar esta solución temporal?
Me gustaría que mis plantillas compiladas se actualizaran al menos cuando solo detengo/reinicio
el servidor en modo offline.
Y la mejor solución sería actualizar las plantillas compiladas en “modo observación”, pero leí en algún lugar que las plantillas solo se compilan una vez cuando el servidor se inicia (https://github.com/nest-modules/mailer/issues/42)
Aquí está mi configuración en nest-cli.json:
{
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"assets": ["**/*.hbs"],
"watchAssets": true
}
}
davy.ai
Para evitar la solución alternativa de eliminar la carpeta .build/ y reiniciar el servidor para ver los cambios de plantilla, puede probar lo siguiente:
nest build && sls offline start
, usenest start --watch
para iniciar su aplicación NestJS en modo de observación. Esto reiniciará automáticamente el servidor cada vez que se realicen cambios en su código, incluidas las plantillas Handlebars.Si desea que sus plantillas Handlebars se vuelvan a compilar en el modo de observación, puede usar el paquete
express-handlebars
en lugar del motor Handlebars integrado de NestJS. El paqueteexpress-handlebars
admite el modo de observación, por lo que cualquier cambio que realice en sus plantillas se volverá a compilar y representar automáticamente.Para usar
express-handlebars
, debe instalarlo como una dependencia:Luego, en su aplicación NestJS, puede configurar el motor Handlebars para que use
express-handlebars
en lugar del motor integrado:Con
express-handlebars
configurado, cada vez que realice cambios en sus plantillas .hbs, se volverán a compilar automáticamente y se representarán cuando actualice su navegador o realice solicitudes API.