angular-cli, donde está el archivo webpack.config.js: el nuevo angular6 no admite la expulsión de ng

132

ACTUALIZACIÓN: diciembre de 2018 (ver respuesta 'Aniket')

Con Angular CLI 6 necesita usar constructores ya que ng eject está en desuso y pronto se eliminará en 8.0

ACTUALIZACIÓN: junio de 2018: Angular 6 no admite la expulsión de ng **

ACTUALIZACIÓN: febrero de 2017: use ng eject

ACTUALIZACIÓN: noviembre de 2016: angular-cli ahora solo usa webpack. Solo necesita instalar normalmente con npm install -g angular-cli. "Cambiamos el sistema de compilación entre beta.10 y beta.14, de SystemJS a Webpack", pero en realidad uso angular-cli solo para la estructura y las carpetas y luego uso la configuración de webpack manualmente

He instalado cli angular con esto:

npm install -g angular-cli@webpack

Cuando trabajé con angular1 y el paquete web, solía modificar el archivo "webpack.config.js" para ejecutar todas las tareas y complementos, pero no veo en este proyecto creado con angular-cli quién funciona. ¿Es magia?

Veo que Webpack funciona cuando lo hago:

ng serve 

"Version: webpack 2.1.0-beta.18"

pero no entiendo la forma en que funciona la configuración angular-cli ...

stackdave
fuente
Está construido en angular2 cli agrega. No hay magia simplemente simplificada.
Jorawar Singh
3
gracias @MrJSingh, pero ¿ya hay un archivo de configuración? o simplemente funciona con angular-cli.json? ¿No necesito más complementos de configuración?
stackdave
Está en: node_modules \ @ngtools
bharatpatel
1
Angular 6.0.8 actualmente no es compatibleng eject
Robert Love
44
Me gusta cómo OP está actualizando la respuesta correcta casi un año después de la publicación.
Luminoso

Respuestas:

34

Con Angular CLI 6, debe usar constructores ya que ng eject está en desuso y pronto se eliminará en 8.0. Eso es lo que dice cuando intento hacer una expulsión de ng

ingrese la descripción de la imagen aquí

Puede usar el paquete de constructores angulares ( https://github.com/meltedspark/angular-builders ) para proporcionar su configuración de paquete web personalizado.

He intentado resumir todo en una sola publicación de blog en mi blog: cómo personalizar la configuración de compilación con la configuración personalizada de webpack en Angular CLI 6

pero esencialmente agrega las siguientes dependencias:

  "devDependencies": {
    "@angular-builders/custom-webpack": "^7.0.0",
    "@angular-builders/dev-server": "^7.0.0",
    "@angular-devkit/build-angular": "~0.11.0",

En angular.json realice los siguientes cambios:

  "architect": {
    "build": {
      "builder": "@angular-builders/custom-webpack:browser",
      "options": {
        "customWebpackConfig": {"path": "./custom-webpack.config.js"},

Observe el cambio en el generador y la nueva opción customWebpackConfig. También cambiar

    "serve": {
      "builder": "@angular-builders/dev-server:generic",

Observe el cambio en el generador nuevamente para el objetivo del servicio. Publique estos cambios; puede crear un archivo llamado custom-webpack.config.js en su mismo directorio raíz y agregar allí la configuración de su paquete web.

Sin embargo, a diferencia de ng expulsar configuración de proporcionada aquí, se combinará con la configuración predeterminada, así que solo agregue las cosas que desea editar / agregar.

Aniket Thakur
fuente
44
Agradable. Debe mencionarse un método para modificar la configuración del paquete web en los documentos angulares. Ayuda a los recién llegados como yo.
Wajahath
Esta configuración de constructores angulares no funciona para mí, ng servesolo sale después de 5 segundos sin salida. Mi proyecto utiliza angular cli 7 y núcleo angular 5.
tedw
¿Hay algún cambio que tenga que hacer en la scriptspropiedad package.json ?
Krishna Prashatt
Tenga en cuenta que, en la versión de constructores angulares para Angular 8, " @angular-builders/dev-server:genericha quedado en desuso. Use en su @angular-builders/custom-webpack:dev-serverlugar". ¿Podría actualizar esta respuesta para reflejar eso?
Brian McCutchon el
1
github.com/just-jeb/angular-builders/tree/master/packages/… - instrucciones muy simples para esto ... - funciona en Angular 9 Universal Ivy
Jonathan
153

Hay una buena manera de expulsar webpack.config.js de angular-cli . Solo corre:

$ ng eject

Esto generará webpack.config.js en la carpeta raíz de su proyecto, y puede configurarlo de la manera que desee. La desventaja de esto es que los scripts de compilación / inicio en su package.json serán reemplazados por los nuevos comandos y en lugar de

$ ng serve

tendrías que hacer algo como

$ npm run build & npm run start

Este método debería funcionar en todas las versiones recientes de angular-cli (personalmente probé algunas, siendo la más antigua 1.0.0-beta.21 y la última 1.0.0-beta.32.3 )

Anton Nikiforov
fuente
1
La única frustración es que solo expulsa la configuración del entorno de desarrollo. Hay un argumento que puede agregar a la expulsión de ng para usar la configuración de producción, pero actualmente no funciona github.com/angular/angular-cli/issues/5433
jtsnr
@bebebe github.com/angular/angular-cli/issues/4907 He pedido estar seguro.
Kunepro
@bebebe, mira aquí stackoverflow.com/questions/42984558/…
Anton Nikiforov el
@AntonNikiforov ¿Cómo configurar el paquete web después de la expulsión? Siento que el archivo de configuración del paquete web se ve tan complicado. La razón por la que lo expulso es porque quiero usar postcss en mi proyecto, pero cli no lo admite en este momento.
Ng2-Fun
¿Cómo ejecutar ng build -w? npm run build -w no funciona, lo mismo para ng build --prod y ng build -d "something"
Victor Bredihin
49

Según este problema , fue una decisión de diseño no permitir a los usuarios modificar la configuración de Webpack para reducir la curva de aprendizaje.

Teniendo en cuenta la cantidad de configuraciones útiles en Webpack, este es un gran inconveniente.

No recomendaría usarlo angular-clipara aplicaciones de producción, ya que es muy obstinado.

Ignacio Andrew
fuente
8
No se recomienda ingresar a una caja negra hasta que comprenda todos los flujos de la arquitectura. Puede ser muy costoso si algunos no son compatibles o no se pueden personalizar en medio del desarrollo de un proyecto.
Ignacio Andrew
11

La configuración del paquete web de la CLI ahora se puede expulsar. Verifique la respuesta de Anton Nikiforov .


anticuado:

Puedes hackear la plantilla de configuración en angular-cli/addon/ng2/models. No hay una forma oficial de modificar la configuración del paquete web a partir de ahora.

Hay un problema cerrado de "wont-fix" en github sobre esto: https://github.com/angular/angular-cli/issues/1656

j2L4e
fuente
1
finalmente uso este esqueleto, angular-cli no está listo para un trabajo real con webpack, tengo muchos problemas. Aconsejo usar esto: github.com/webpack/webpack-dev-server
stackdave
55
Estoy triste, el problema está cerrado ya que "no se implementará". :-(
lunes
1
También hay npmjs.com/~ngtools donde puede obtener el paquete web que ejecuta la CLI de forma independiente. Vea youtu.be/uBRK6cTr4Vk?t=7m57s
Mikeumus el
-1

Según la sugerencia de ng ejectusted puede usarngx-build-plus

Hay varios proyectos que se pueden usar en conjunción con el nuevo formato de configuración que proporcionan los beneficios de expulsar sin la sobrecarga de mantenimiento. Uno de estos proyectos es ngx-build-plus que se encuentra aquí: https://github.com/manfredsteyer/ngx-build-plus

Ravi Sevta
fuente