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 ...


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.


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 )


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


@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.


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


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


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.