2014-12-10 20 views
24

Sono passato da browserify a webpack e il tempo di costruzione è passato da 4 a 16 secondi (2014 MBP). Capisco che il webpack sia molto più di browserify, ma non dovrei impiegare molto tempo. Il mio processo di compilazione è abbastanza semplice. Ci sono suggerimenti o opzioni per migliorare il mio tempo di costruzione?Come migliorare le prestazioni del Webpack?

var webpackOptions = { 
    cache : true, 
    output: { 
    filename: '[name].js', 
    }, 
    module: { 
    loaders: [ 
     { test: /\.js$/, loader: 'jsx-loader' }, 
     { test: /\.css$/, loader: "style!css" } 
    ] 
    }, 
}; 


gulp.task('buildJs', function(){ 
    multipipe(
     gulp.src(jsSrcPath), 
     named(), 
     webpack(webpackOptions), 
     uglify(), 
     gulp.dest(jsDestPath) 
    ).on('error', function(error){ 
     console.log(error) 
    }); 
}); 
+3

C'è una differenza tra l'utilizzo di webpack tramite gulp e webpack? Semplicemente curioso :) –

risposta

9

È possibile utilizzare l'opzione noParse per file di grandi dimensioni, come jQuery e angolare.

Esempi qui: https://github.com/jeffling/angular-webpack-example/blob/b2b59dff60c35ee6d70170948ab15bba8af5e613/template/webpack.config.coffee#L60

Inoltre, se si imposta cache true, quando si guarda ricostruisce un molto più veloce.

Un'altra tecnica per aumentare la velocità consiste nel mettere grandi dipendenze che non si intende modificare in un pacchetto separato.

+0

Mi piace l'idea di mettere grandi dipendenze in un pacchetto separato (ad esempio jquery o angolare). Tuttavia, come richiederebbe ('jquery') e usarlo nel pacchetto principale dell'app? – Aman

+1

Assicurati che entrambi i bundle siano inclusi nel tuo html e dovrebbe funzionare –

+0

Il Caching è impostato su true per impostazione predefinita per la visione. – Swordfish0321

24

È necessario impostare i percorsi include per i caricatori. Esempio:

Considerare di fare lo stesso per quel caso di css.

Nella mia esperienza questo può dare enormi vantaggi in quanto non deve più attraversare attraverso node_modules. In alternativa potresti excludenode_modules ma trovo più ordinato solo per impostare quello include. Diventa più complicato se si richiede il contenuto al di fuori del percorso di inclusione, però.

Docs for include/exclude

+0

browserify non sta applicando le trasformazioni a 'node_modules', questo è il motivo per cui è più veloce (immediato) – timaschew

+0

@timaschew Sì, questo lo spiega in modo efficace. Con webpack 'include' è un'ottima idea. –

+0

Grazie per aver fatto un'enorme differenza per me. –

1

Recentemente un nuovo modulo loader, HappyPack (non scritto da me), fa uso pesante di parallelizzazione e la cache del disco per migliorare i tempi di costruire su basi di codice di grandi dimensioni abbastanza significativo. I tempi di compilazione sul mio codice base sono passati da 40 secondi a 10. È comunque una libreria piuttosto nuova, quindi non è estremamente ben documentata o facile da usare. Vale la pena dare un'occhiata però.

+0

Nel mio caso fortunatamente fortunatamente non ha aiutato, devtool hovewer: 'eval-source-map', aiutato un po '. –

Problemi correlati