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.
Para este punto ya tendriamos una aplicacion angular ya instalada y corriendo de manera local.
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 fileexport const environment = {production: true,host: "http://french.codevs.tech",};// environment.prod-english.ts another fileexport const environment = {production: true,host: "http://english.codevs.tech",};
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
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í
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.
Como pudimos ver, pudimos extender un poco la funcionalidad que nos ofrece el angular build, y poder ajustarlo a nuestras necesidades.