Saltar al contenido principal

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_PORT o PORT (por defecto 3000)
  • NITRO_HOST o HOST

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.

  1. 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 [];
},
},
}),
],
}));
  1. 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 || '/' }],
...
],
};
  1. HttpClient usar injectAPIPrefix().
const response = await firstValueFrom(
this.httpClient.get<{ client: string }>(`${injectAPIPrefix()}/v1/hello`),
);
  1. 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
  1. En contenedores de producción especificar la bandera NITRO_APP_BASE_URL en el archivo .env.
NITRO_APP_BASE_URL="/basehref/"
  1. Previsualizando en local:
npx vite build && NITRO_APP_BASE_URL='/basehref/' node dist/analog/server/index.mjs