typescript - instalar - ng server
¿Puedo pasar argumentos a angular-cli en tiempo de construcción? (2)
Es posible crear múltiples archivos de configuración con @angular/cli .
Como se menciona en los docs los archivos de configuración personalizados se pueden agregar de la siguiente manera:
- crear un
src/environments/environment.NAME.ts - agregue
{ "NAME": ''src/environments/environment.NAME.ts'' }a lasapps[0].environmentsobjeto en.angular-cli.json -
--env=NAMEa través del--env=NAMEen los comandos de compilación / servicio.
Por lo tanto, es probable que necesite 6 archivos de configuración para dev y 6 archivos de configuración para prod.
Y luego, para acceder a esas variables, solo importe el objeto de environment.ts archivo environment.ts .
Me gustaría pasar argumentos personalizados a angular-cli al crear una aplicación Angular2 (mecanografía). es posible? ¿Cómo puedo acceder a estos argumentos en mi código?
El escenario es así: tengo una aplicación Angular2 con 2 diseños. Cada diseño tiene 3 colores (rojo, azul, verde). Quiero construir todas las combinaciones posibles. Una aplicación por diseño y color => layout1red, layout1green, layout2blue, ...
Quiero crear 6 archivos de configuración JSON para cada compilación donde defino el diseño y el color, y tal vez algunas propiedades adicionales.
No entendí completamente tu pregunta, puedo pensar en dos maneras de hacer que esto suceda:
A- Pasando argumentos al generar un nuevo proyecto:
1- Para poder pasar argumentos al cli angular, necesita saber dónde quiere que se use.
Si esas configuraciones se utilizan en su diseño, puede bifurcar el clúster Angular y actualizarlo y agregar fácilmente su propia configuración.
Aquí está el modelo de componentes:
angular-cli/packages/@angular/cli/blueprints/component/files/__path__/__name__.component.ts
Que se parece a esto:
@Component({
selector: ''<%= selector %>'',<% if(inlineTemplate) { %>
template: `
ves selector ? ese es el nombre del componente con el que puedes jugar y al final, cuando estés creando un nuevo proyecto, puedes pasar tus propias banderas allí y usarlo.
Pero esta no es la mejor idea porque siempre estás en problemas cuando Angular Cli se actualiza.
2- La otra solución posible es usar ng eject
Esto generará la configuración del webpack en un archivo separado y lo webpack en la carpeta raíz de su proyecto, luego podrá jugar con ese archivo, proporcionar su configuración y personalizarlo según su aplicación.
Pero una vez más, no estoy seguro de cómo quiere usar esa configuración.
Este es un candidato perfecto para su configuración de build time .
3- Usa la configuración de environments :
Como ya se ha respondido, esto también es muy conveniente para proporcionar una configuración de build time :
Sigue la respuesta de @mikedanylov y luego @mikedanylov así en tus archivos:
import { environment } from ''./environments/environment'';
if(environment.colorRed===''blue''){
console.log(''the color is blue'');
}
npm build -e=colorRed
B: Run time :
Esta es una mejor opción, puede crear una llamada en su index.html como esta:
<script scr="wherever/configurations/blue"></script>
y luego dentro de la configuración podría tener:
var configuration = {
whatEver:"blue"
}
y como se trata de un script, estará disponible en todas partes y podrá acceder a él en sus componentes:
export class MyComponent{
ngOnInit(){
console.log(''colour is : ''+window[''configuration.whatEver'']); // obviously you can improve this and create type definitions and what not.
}
}
Esto le dará más flexibilidad para actualizar su configuración en el futuro sin tener que volver a construir su aplicación.
Obviamente, puedes hacer la misma llamada a través de una llamada Ajax, pero me parece que más arriba es más agnóstico de la aplicación.