Je suis nouveau sur webpack. Je ne comprends pas pourquoi il compile un bundle.js aussi lourd. Même pour le plus petit de vos exemples, todos-with-undo c'est 1,9 Mo ! Pour d'autres exemples plus complexes, c'est environ 2,5 Mo. Il y a certainement quelque chose qui ne va pas dans la configuration.
Super boulot d'ailleurs :)
Il n'y a rien de mal en soi, les exemples ne sont tout simplement pas configurés pour la production. Il est peu probable que nous le fassions ici pour éviter le fardeau de la maintenance. Veuillez consulter des modèles Webpack plus complets pour obtenir des exemples de configurations de production.
À tout le moins, vous voudrez le faire en production :
devtool
de 'eval'
à 'source-map'
webpack.DefinePlugin
pour définir process.env.NODE_ENV
à 'production'
webpack.optimize.UglifyJsPlugin
pour la minificationNODE_ENV=production
donc .babelrc
n'active pas react-transform
Une configuration de production Webpack typique pourrait ressembler à ceci :
var path = require('path');
var webpack = require('webpack');
module.exports = {
devtool: 'source-map',
entry: [
'./src/index'
],
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: '/static/'
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.optimize.UglifyJsPlugin({
compressor: {
warnings: false
}
})
],
module: {
loaders: [{
test: /\.js$/,
loaders: ['babel'],
include: path.join(__dirname, 'src')
}]
}
};
Voici un passe-partout incluant un mode de production si cela vous intéresse.
Le meilleur moyen devrait être AsyncRoute. Nous devons regrouper le template/css/js d'un composant pour éviter plusieurs requêtes, mais le charger à la demande.
Avoir devtool
tant que inline-source-map
au lieu de seulement source-map
gonflera également le fichier de sortie en mettant la carte source (surprise) en ligne. Évident, mais j'ai oublié cela et il m'a fallu une heure pour comprendre, donc je le mets ici pour référence future générale
Commentaire le plus utile
Il n'y a rien de mal en soi, les exemples ne sont tout simplement pas configurés pour la production. Il est peu probable que nous le fassions ici pour éviter le fardeau de la maintenance. Veuillez consulter des modèles Webpack plus complets pour obtenir des exemples de configurations de production.
À tout le moins, vous voudrez le faire en production :
devtool
de'eval'
à'source-map'
webpack.DefinePlugin
pour définirprocess.env.NODE_ENV
à'production'
webpack.optimize.UglifyJsPlugin
pour la minificationNODE_ENV=production
donc.babelrc
n'active pasreact-transform
Une configuration de production Webpack typique pourrait ressembler à ceci :
Voici un passe-partout incluant un mode de production si cela vous intéresse.