Mam mój pakiet sieci Web generujący duży plik main.js (1,7 MB) z małym projektem ~ 20-30 plików mniej niż 100 linii każdy. Zależności wymagane są nieliczne (React, Fluxible) i używam każdy plugin zoptymalizować mogę zrozumieć:Webpack tworzenie dużego pliku z małym projektem
module.exports = {
output: {
path: './build',
publicPath: '/public/',
filename: '[name].js'
},
debug: false,
devtool: 'eval',
target: 'web',
entry: [
'bootstrap-sass!./bootstrap-sass.config.js',
'./client.js',
],
stats: {
colors: true,
reasons: false
},
resolve: {
extensions: ['', '.js'],
alias: {
'styles': __dirname + '/src/styles',
'components': __dirname + '/src/scripts/components',
'actions': __dirname + '/src/scripts/actions',
'stores': __dirname + '/src/scripts/stores',
'constants': __dirname + '/src/scripts/constants',
'mixins': __dirname + '/src/scripts/mixins',
'configs': __dirname + '/src/scripts/configs',
'utils': __dirname + '/src/scripts/utils'
}
},
module: {
loaders: [
{ test: /\.css$/, loader: 'style!css' },
{ test: /\.js$/, exclude: /node_modules/, loader: require.resolve('babel-loader') },
{ test: /\.json$/, loader: 'json-loader'},
{ test: /\.(png|svg|jpg)$/, loader: 'url-loader?limit=8192' },
{ test: /\.(ttf|eot|svg|woff|woff(2))(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url?name=/[name].[ext]"},
{ test: /\.scss$/,
loader: ExtractTextPlugin.extract('style-loader',
'css!sass?outputStyle=expanded&' +
"includePaths[]=" +
(path.resolve(__dirname, "./node_modules"))
)
}
]
},
plugins: [
new webpack.NoErrorsPlugin(),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"windows.jQuery": "jquery"
}),
new ExtractTextPlugin("[name].css", {allChunks: true}),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.AggressiveMergingPlugin()
],
};
Co robię źle lub gdzie mogę dalszej poprawy rozmiar pliku?
Tak, zdecydowanie przyjrzę się temu i zobaczę, jak wpływa na kod. Ponadto znalazłem swój błąd, który sugerowałbym dodać do odpowiedzi, robiłem 'devtools: true', co powodowało, że mój plik był ogromny, a do produkcji nie musi być prawdziwy. –
Fajnie, dodałem to. Całkowicie zapomniałem o 'devtool'. –
Alternatywne narzędzie wiersza poleceń do analizy pakietów Webpack: https://github.com/robertknight/webpack-bundle-size-analyzer – jmu