angular-cli dove si trova il file webpack.config.js - new angular6 non supporta l'espulsione


132

AGGIORNAMENTO: dicembre 2018 (vedi risposta "Aniket")

Con Angular CLI 6 è necessario utilizzare i costruttori poiché l'eliminazione è obsoleta e verrà presto rimossa in 8.0

AGGIORNAMENTO: giugno 2018: Angular 6 non supporta l'espulsione **

AGGIORNAMENTO: febbraio 2017: usa l'espulsione

AGGIORNAMENTO: novembre 2016: angular-cli ora utilizza solo il webpack. Devi solo installarlo normalmente con npm install -g angular-cli. "Abbiamo cambiato il sistema di compilazione tra beta.10 e beta.14, da SystemJS a Webpack.", Ma in realtà utilizzo angular-cli solo per la struttura e le cartelle dei primi e poi più, utilizzo manualmente la configurazione del webpack

Ho installato cli angolare con questo:

npm install -g angular-cli@webpack

Quando ho lavorato con angular1 e web pack, ho usato per modificare il file "webpack.config.js" per eseguire tutte le attività e i plugin, ma non vedo su questo progetto creato con angular-chi che funziona. è magico?

Vedo che Webpack funziona quando lo faccio:

ng serve 

"Version: webpack 2.1.0-beta.18"

ma non capisco come funziona la configurazione angular-cli ...


È integrato in angular2 cli aggiunge. Nessuna magia semplicemente semplificata.
Jorawar Singh,

3
grazie @MrJSingh, ma c'è ancora un file di configurazione? o semplicemente funziona con angular-cli.json? non ho bisogno di più plugin di configurazione?
stackdave,

È AT: node_modules \ @ngtools
bharatpatel il

1
Angular 6.0.8 attualmente non supportang eject
Robert Love il

4
Mi piace come OP sta aggiornando la risposta corretta quasi un anno dopo la pubblicazione.
Luminoso

Risposte:


34

Con Angular CLI 6 è necessario utilizzare i costruttori in quanto l'espulsione è obsoleta e verrà presto rimossa in 8.0. Questo è ciò che dice quando provo a fare un'espulsione

inserisci qui la descrizione dell'immagine

Puoi usare il pacchetto angular-builders ( https://github.com/meltedspark/angular-builders ) per fornire la tua configurazione webpack personalizzata.

Ho provato a riassumere tutto in un singolo post sul mio blog - Come personalizzare la configurazione di build con la configurazione webpack personalizzata in CLI angolare 6

ma essenzialmente aggiungi le seguenti dipendenze:

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

In angular.json apportare le seguenti modifiche:

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

Notare il cambiamento nel builder e la nuova opzione customWebpackConfig. Anche cambiare

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

Notare di nuovo la modifica del builder per il target di servizio. Pubblica queste modifiche e puoi creare un file chiamato custom-webpack.config.js nella tua stessa directory root e aggiungere lì la tua configurazione webpack.

Tuttavia, a differenza della configurazione di espulsione fornita qui, verrà unita alla configurazione predefinita, quindi aggiungi solo gli elementi che desideri modificare / aggiungere.


4
Bello. Un metodo per modificare la configurazione del webpack dovrebbe essere menzionato nei documenti angolari. Aiuta i nuovi arrivati ​​come me.
Wajahath,

Questa configurazione dei costruttori angolari non funziona per me, ng serveesce solo dopo 5 secondi senza output. Il mio progetto utilizza
angular

C'è qualche cambiamento che devo fare nella scriptsproprietà di package.json ?
Krishna Prashatt,

Si noti che, nella versione di angular-builders per Angular 8, " @angular-builders/dev-server:genericè stato deprecato. Utilizzare @angular-builders/custom-webpack:dev-serverinvece". Potresti aggiornare questa risposta per riflettere ciò?
Brian McCutchon,

1
github.com/just-jeb/angular-builders/tree/master/packages/… - istruzioni molto semplici per questo ... - funziona in Angular 9 Universal Ivy
Jonathan

153

C'è un bel modo per espellere webpack.config.js da angular -cli . Corri:

$ ng eject

Questo genererà webpack.config.js nella cartella principale del tuo progetto e sarai libero di configurarlo come desideri. L'aspetto negativo di questo è che gli script di build / start nel pacchetto.json verranno sostituiti con i nuovi comandi e invece di

$ ng serve

dovresti fare qualcosa del genere

$ npm run build & npm run start

Questo metodo dovrebbe funzionare in tutte le versioni recenti di angular-cli (ne ho provate personalmente alcune, con la più vecchia 1.0.0-beta.21 e l'ultima 1.0.0-beta.32.3 )


1
L'unica frustrazione è che espelle solo la configurazione dell'ambiente di sviluppo. C'è un argomento che puoi aggiungere all'espulsione di ng per utilizzare invece la configurazione di produzione, ma al momento non funziona github.com/angular/angular-cli/issues/5433
jtsnr

@bebebe github.com/angular/angular-cli/issues/4907 Ho chiesto di esserne sicuro.
Kunepro,


@AntonNikiforov Come configurare il webpack dopo l'espulsione? Sento che il file di configurazione del webpack sembra così complicato. Il motivo per cui lo espulsione è perché voglio usare postcss nel mio progetto ma cli non lo supporta in questo momento.
Ng2-Fun

come eseguire ng build -w? npm run build -w non funziona, lo stesso per ng build --prod e ng build -d "qualcosa"
Victor Bredihin

49

In base a questo problema , si è deciso di non consentire agli utenti di modificare la configurazione del Webpack per ridurre la curva di apprendimento.

Considerando il numero di utili configurazioni su Webpack, questo è un grande svantaggio.

Non consiglierei l'uso angular-cliper applicazioni di produzione, poiché è altamente supponente.


8
Non è consigliabile entrare in una blackbox fino a quando non si comprende ogni flusso dell'architettura, può essere molto costoso se alcuni non sono supportati o non possono essere personalizzati nel mezzo di uno sviluppo del progetto.
Ignazio Andrea,

11

Ora è possibile espellere la configurazione del webpack della CLI. Controlla la risposta di Anton Nikiforov .


superata:

Puoi hackerare il modello di configurazione in angular-cli/addon/ng2/models. Al momento non esiste un modo ufficiale per modificare la configurazione del webpack.

C'è un problema chiuso "wont-fix" su github su questo: https://github.com/angular/angular-cli/issues/1656


1
finalmente uso questo scheletro, angular-cli non è pronto per il vero lavoro con il webpack, ho molti problemi. Consiglio di usare questo: github.com/webpack/webpack-dev-server
stackdave

5
Sono triste, il problema è chiuso perché "non implementerà". :-(
monnef

1
C'è anche npmjs.com/~ngtools dove è possibile ottenere il webpack che esegue la CLI autonoma. Vedi youtu.be/uBRK6cTr4Vk?t=7m57s
Mikeumus


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.