Ich bin neu bei Webpack. Ich kann nicht herausfinden, warum es so ein schweres Bundle.js kompiliert. Selbst für das kleinste Ihrer Beispiele, Todos-with-Undo, sind es 1,9 MB! Für andere komplexere Beispiele sind es etwa 2,5 MB. Da stimmt definitiv etwas mit der Konfiguration nicht.
Tolle Arbeit übrigens :)
An sich ist nichts auszusetzen, die Beispiele sind nur nicht für die Produktion konfiguriert. Wir werden dies hier wahrscheinlich nicht tun, um den Wartungsaufwand zu vermeiden. Beispiele für Produktionskonfigurationen finden Sie in den ausführlicheren Webpack-Boilerplates.
Zumindest möchten Sie dies in der Produktion tun:
devtool
von 'eval'
in 'source-map'
webpack.DefinePlugin
, um process.env.NODE_ENV
auf 'production'
webpack.optimize.UglifyJsPlugin
für die Verkleinerung hinzuNODE_ENV=production
anrufen, damit .babelrc
react-transform
nicht aktiviertEine typische Webpack-Produktionskonfiguration könnte wie folgt aussehen:
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')
}]
}
};
Hier ist eine Boilerplate mit einem Produktionsmodus, wenn Sie interessiert sind.
Der beste Weg sollte AsyncRoute sein. Wir sollten das Template/css/js einer Komponente bündeln, um mehrere Anfragen zu vermeiden, aber es bei Bedarf laden.
Wenn devtool
als inline-source-map
anstelle von nur source-map
wird, wird auch die Ausgabedatei gestapelt, indem die Quellzuordnung (Überraschung) inline eingefügt wird. Offensichtlich, aber ich habe das übersehen und ich habe eine Stunde gebraucht, um es herauszufinden, also stelle ich es hier als allgemeine Referenz für die Zukunft ein
Hilfreichster Kommentar
An sich ist nichts auszusetzen, die Beispiele sind nur nicht für die Produktion konfiguriert. Wir werden dies hier wahrscheinlich nicht tun, um den Wartungsaufwand zu vermeiden. Beispiele für Produktionskonfigurationen finden Sie in den ausführlicheren Webpack-Boilerplates.
Zumindest möchten Sie dies in der Produktion tun:
devtool
von'eval'
in'source-map'
webpack.DefinePlugin
, umprocess.env.NODE_ENV
auf'production'
webpack.optimize.UglifyJsPlugin
für die Verkleinerung hinzuNODE_ENV=production
anrufen, damit.babelrc
react-transform
nicht aktiviertEine typische Webpack-Produktionskonfiguration könnte wie folgt aussehen:
Hier ist eine Boilerplate mit einem Produktionsmodus, wenn Sie interessiert sind.