Eu sou novo no webpack. Não consigo descobrir por que ele compila um bundle.js tão pesado. Mesmo para o menor dos seus exemplos, todos-with-undo tem 1,9 MB! Para outros exemplos mais complexos, é cerca de 2,5 MB. Definitivamente, há algo errado na configuração.
A propósito, ótimo trabalho :)
Não há nada de errado em si, os exemplos simplesmente não estão configurados para produção. Não é provável que façamos isso aqui para evitar a carga de manutenção - consulte os boilerplates mais completos do Webpack para obter exemplos de configurações de produção.
No mínimo, você vai querer fazer isso na produção:
devtool
de 'eval'
para 'source-map'
webpack.DefinePlugin
para definir process.env.NODE_ENV
para 'production'
webpack.optimize.UglifyJsPlugin
para minificaçãoNODE_ENV=production
então .babelrc
não ativa react-transform
Uma configuração de produção típica do Webpack pode ter a seguinte aparência:
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')
}]
}
};
Aqui está um clichê incluindo um modo de produção, se você estiver interessado.
A melhor maneira deve ser AsyncRoute. Devemos empacotar o template / css / js de um componente para evitar múltiplas solicitações, mas carregá-lo sob demanda.
Ter devtool
como inline-source-map
vez de apenas source-map
também irá aumentar o arquivo de saída, colocando o mapa de origem (surpresa) embutido. Óbvio, mas esqueci isso e levei uma hora para descobrir, então estou colocando aqui para referência futura geral
Comentários muito úteis
Não há nada de errado em si, os exemplos simplesmente não estão configurados para produção. Não é provável que façamos isso aqui para evitar a carga de manutenção - consulte os boilerplates mais completos do Webpack para obter exemplos de configurações de produção.
No mínimo, você vai querer fazer isso na produção:
devtool
de'eval'
para'source-map'
webpack.DefinePlugin
para definirprocess.env.NODE_ENV
para'production'
webpack.optimize.UglifyJsPlugin
para minificaçãoNODE_ENV=production
então.babelrc
não ativareact-transform
Uma configuração de produção típica do Webpack pode ter a seguinte aparência:
Aqui está um clichê incluindo um modo de produção, se você estiver interessado.