Je suis récemment passé de browserify à webpack et le temps de construction est passé de 4s à 16s (2014 MBP). Je comprends que webpack fait beaucoup plus que browserify mais je ne devrais pas prendre autant de temps. Mon processus de construction est assez simple. Y a-t-il des conseils ou des options pour améliorer mon temps de construction?
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)
});
});
Vous devez définir include
chemins pour vos chargeurs. Exemple:
{ test: /\.js$/, loader: 'jsx-loader', include: jsSrcPath }
Pensez à faire de même pour ce cas css.
D'après mon expérience, cela peut donner des gains massifs car il n'a pas à traverser node_modules
plus. Vous pouvez également exclude
node_modules
mais je trouve que c'est plus juste de configurer ça include
. Cependant, cela devient plus compliqué si vous avez besoin de contenu hors du chemin d'inclusion.
Vous pouvez utiliser l'option noParse
pour les gros fichiers, comme jquery et angular.
De plus, si vous définissez cache
sur true, lorsque vous le regardez, il reconstruit un beaucoup plus rapidement .
Une autre technique pour augmenter la vitesse consiste à placer de grandes dépendances que vous n'allez pas modifier dans un bundle séparé.
Récemment, un nouveau chargeur de module, HappyPack (non écrit par moi), fait un usage intensif de la parallélisation et de la mise en cache du disque pour améliorer les temps de construction sur de grandes bases de code de manière assez significative. Les temps de compilation sur ma base de code sont passés de 40 secondes à 10. C'est quand même une bibliothèque assez nouvelle, donc elle n'est pas extrêmement bien documentée ou conviviale. Ça vaut le coup d'y jeter un coup d'œil.