Despliegue
El despliegue en Node.js es el preset de salida predeterminado de Analog para las compilaciones de producción.
Al ejecutar npm run build con el preset predeterminado, el resultado será un punto de entrada que lanza un servidor Node listo para ejecutar.
Para iniciar el servidor independiente, ejecuta:
$ node dist/analog/server/index.mjs
Listening on http://localhost:3000
Variables de Entorno
Puedes personalizar el comportamiento del servidor usando las siguientes variables de entorno:
NITRO_PORToPORT(por defecto3000)NITRO_HOSToHOST
Presets Integrados
Analog puede generar diferentes formatos de salida adecuados para diferentes proveedores de hosting desde la misma base de código. Puedes cambiar el preset de despliegue usando una variable de entorno o vite.config.ts.
Se recomienda usar variables de entorno para despliegues que dependen de CI/CD.
Ejemplo: Usando BUILD_PRESET
BUILD_PRESET=node-server
Ejemplo: Usando vite.config.ts
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [
analog({
nitro: {
preset: 'node-server',
},
}),
],
});
Desplegando con un Prefijo de URL Personalizado
Si estás desplegando con un prefijo de URL personalizado, como por ejemplo https://domain.com/ basehref, debe realizar los siguientes pasos para que la obtención de datos en el lado del servidor, HTML y recursos y las rutas de API dinámicas funcionen correctamente en el prefijo de URL especificado.
- Actualiza el archivo
app.config.ts.
export default defineConfig(({ mode }) => ({
base: '/basehref',
plugins: [
analog({
...(mode === 'production'
? { apiPrefix: 'basehref' }
: { apiPrefix: 'basehref/api' }),
prerender: {
routes: async () => {
return [];
},
},
}),
],
}));
- Actualiza el archivo
app.config.ts.
Esto instruye a Angular como debe reconocer y generar las URLs.
import { ApplicationConfig } from '@angular/core';
import { APP_BASE_HREF } from '@angular/common';
export const appConfig: ApplicationConfig = {
providers: [
[{ provide: APP_BASE_HREF, useValue: import.meta.env.BASE_URL || '/' }],
...
],
};
- HttpClient usar
injectAPIPrefix().
const response = await firstValueFrom(
this.httpClient.get<{ client: string }>(`${injectAPIPrefix()}/v1/hello`),
);
- Build a producción en CI
No establecer VITE_ANALOG_PUBLIC_BASE_URL, deber a utilizar lo que esté en vite.config.ts.
Si VITE_ANALOG_PUBLIC_BASE_URL está presente durante la construcción, los datos de SSR se obtienen en el servidor y en el cliente.
# Si usa nx:
npx nx run appname:build:production
# Si usa directamente angular build:
npx vite build && NITRO_APP_BASE_URL='/basehref/' node dist/analog/server/index.mjs
- En contenedores de producción especificar la bandera
NITRO_APP_BASE_URLen el archivo .env.
NITRO_APP_BASE_URL="/basehref/"
- Previsualizando en local:
npx vite build && NITRO_APP_BASE_URL='/basehref/' node dist/analog/server/index.mjs