page navigationend change angular2 angular build production angular-cli

navigationend - Angular 2 con CLI-construir para producción



router events subscribe angular 4 (9)

Acabo de instalar angular-cli 1.0.0.beta.17 (el más reciente), comenzar un nuevo proyecto, poder servir el proyecto en el puerto 4200 sin problemas, ¡solo la "aplicación estándar" funciona! mensaje.

Sin embargo, cuando intento compilar para la producción esta aplicación vacía y genérica mediante el comando ng build --prod no tengo ningún archivo principal. *. Js creado en absoluto y tengo algunas pantallas de advertencias como:

  • Bajando la función no utilizada ...
  • Efectos del sitio en la inicialización ...
  • etc

Este es un nuevo proyecto vacío. Todavía no tuve la oportunidad de romper nada ...

¿Cómo construir la versión de producción?


Con la versión cli (1.0.1) usa:

ng build --prod

Esto le dará la carpeta dist con el index.html y todo el archivo js incluido listo para la producción.


Debe actualizar la última versión angular-cli, mecanografiado. Si usas el comando:

ng build --prod --aot=false

Su proyecto compila la compilación JIT y debe funcionar si utiliza angular-cli.

si quieres construir con comando

ng build --prod --aot=true

entonces será una compilación AOT y deberá actualizar el archivo main.ts en:

import { enableProdMode } from ''@angular/core''; import { platformBrowser } from ''@angular/platform-browser''; import { AppModule } from ''./app/app.module''; import { environment } from ''./environments/environment''; if (environment.production) { enableProdMode(); } platformBrowser().bootstrapModuleFactory(AppModule);


Desea el AOT, que está implícito por el uso del -prod . Desafortunadamente, cuando Angular CLI se rompe, los mensajes de error no son útiles. Así lo resolví:

npm install [email protected]

Encontré la solución hace mucho, mucho camino en esta página: https://github.com/angular/angular-cli/issues/7113

He visto alguna mención de que actualizar la versión de Angular CLI a al menos 1.2.6. soluciona el problema también, pero no lo ha probado todavía.


Estas son las advertencias de uglify js, ya sea de su código fuente de java-script o de las bibliotecas de terceros que está utilizando en su proyecto. Por ahora, puede ignorarlas.

El equipo de Angular Cli está trabajando en suprimir esto para la compilación de producto https://github.com/angular/angular-cli/pull/1609


Hay muchos comandos para construir la aplicación angular al modo de producción usando cli angular.

ng build --env = prod

Una vez que ejecute este comando en cmd dist, se creará una carpeta predeterminada que contendrá todos los archivos minificados relacionados con la compilación prod, pero no establecerá la ruta base en el index.html. Para cambiar en index.html, vaya y haga el cambio manual como agregar el (.) Ie.

<base href="./">

También puede pasar el parámetro mientras construye el código en modo prod mediante el comando angular / CLI.

ng build --base-href=./ --env=prod

También hay otros comandos para compilar, como pasar el AOT y el optimizador de compilación (para reducir el tamaño de los paquetes).

ng build --prod --build-optimizer

Si desea cambiar el nombre de la carpeta predeterminada (dist) después de la compilación, puede cambiar el valor de outDir en .angular-cli.json.


Intente usar: ng build --target = production Esto debería funcionar.


Según la wiki de github de Angular-cli, estas son las formas más comunes de iniciar un desarrollo y desarrollo de producción.

# these are equivalent ng build --target=production --environment=prod ng build --prod --env=prod ng build --prod # and so are these ng build --target=development --environment=dev ng build --dev --e=dev ng build --dev ng build

Hay diferentes banderas predeterminadas que afectarán a las compilaciones dedev vs --prod.

Flag --dev --prod --aot false true --environment dev prod --output-hashing media all --sourcemaps true false --extract-css false true

--prod también establece los siguientes ajustes no identificables:

  • Agrega un trabajador de servicio si está configurado en .angular-cli.json .
  • Reemplaza process.env.NODE_ENV en módulos con el valor de production (esto es necesario para algunas bibliotecas, como reaccionar).
  • Ejecuta UglifyJS en el código.

Necesito resolver algunos problemas para que AOT funcione. Cuando corri

ng build --prod --aot = false

Yo obtendré un error similar a

Module not found: Error: Can''t resolve ''./$$_gendir/app/app.module.ngfactory''

Originalmente, tuve que hacer un proyecto de refactorización para que AOT funcionara. Sin embargo, pueden ser una solución si se encuentra con este error. Tratar

npm i [email protected]

https://github.com/angular/angular-cli/issues/7113


Si Aot está o no está implementado.

Si Aot es implementado:

ng build --prod

Si Aot no está implementado:

ng build --prod --aot=false


prueba esto

ng build --env=prod

El sistema de compilación toma como valor predeterminado el entorno dev que utiliza environment.ts , pero si realiza ng build --env=prod , se utilizará environment.prod.ts su lugar.

Resultado de la muestra si su proyecto es nueva aplicación angular de cli.

10% building mod3439ms building modules 1ms add01564ms 917ms asset45ms emittingHash: 9216e76d6f10637c945c Version: webpack 2.1.0-beta.22 Time: 6358ms Asset Size Chunks Chunk Names main.bundle.js 2.6 MB 0, 2 [emitted] main styles.bundle.js 10.2 kB 1, 2 [emitted] styles inline.js 5.53 kB 2 [emitted] inline main.map 2.61 MB 0, 2 [emitted] main styles.map 14.2 kB 1, 2 [emitted] styles inline.map 5.59 kB 2 [emitted] inline index.html 482 bytes [emitted] assets/.npmignore 0 bytes [emitted] chunk {0} main.bundle.js, main.map (main) 2.06 MB {1} [initial] [rendered] chunk {1} styles.bundle.js, styles.map (styles) 9.96 kB {2} [initial] [rendered] chunk {2} inline.js, inline.map (inline) 0 bytes [entry] [rendered] Child html-webpack-plugin for "index.html": Asset Size Chunks Chunk Names index.html 2.82 kB 0 chunk {0} index.html 350 bytes [entry] [rendered]

Hecho y está bajo / dist a menos que haya cambiado outDir en angular-cli.json