October 31, 2022
Angular custom builds
En algún momento necesitamos hacer builds para diferentes instancias, cambiando algunas cosas de estilo o logos
blog picture
Introducción

En cada proyecto es posible tener la necesidad de generar la aplicación pero con la diferencia del Logo, o inclusive cambiar los colores que se ven.

Comenzamos

Para este punto ya tendriamos una aplicacion angular ya instalada y corriendo de manera local.

Paso 1.

Abrimos el archivo “angular.json” y nos dirijimos hasta projects/architect/build/configurations

json
// angular.json
"prod-french": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod-french.ts"
}
]
},
"prod-english": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod-english.ts"
}
]
}

Esta propiedad de fileReplacements, lo que hará al momento de hacer build es reemplazar el archivo enviroments por el que especificamos.

Ahora tenemos que crear los archivos de manera independiente.

typescript
// environment.prod-french.ts another file
export const environment = {
production: true,
host: "http://french.codevs.tech",
};
// environment.prod-english.ts another file
export const environment = {
production: true,
host: "http://english.codevs.tech",
};
Paso 2.

Ahora necesitamos actualizar el logo de nuestra aplicación para “FRENCH” y otro logo para “ENGLISH”, necesitaremos instalar el siguiente paquete npm.

bash
$ npm install copyfiles
Paso 3.

Modificamos nuestro package.json para que reemplaze el logo de acuerdo al entorno antes de hacer build correspondiente.

json
"scripts": {
"prebuildfrench": "copyfiles --flat src/french/logo.png src/assets/images",
"buildfrench": "ng build --configuration=prod-french",
"prebuildenglish": "copyfiles --flat src/english/logo.png src/assets/images",
"buildenglish": "ng build --configuration=prod-english",
},

En NPM tenemos lo que se llaman HOOKS, que son comandos que se ejecutan antes y después de cada una para mas detalle puedes acceder el siguiente enlace aquí

Paso 4.

Finalmente al ejecutar el comando

json
$ npm run buildfrench

Se copiara el logo de la ruta src/french/logo.png a la ruta src/assets/images, y si existiera una previa simplemente lo reemplaza.

Conclusiones

Como pudimos ver, pudimos extender un poco la funcionalidad que nos ofrece el angular build, y poder ajustarlo a nuestras necesidades.