[英]webpack-bundle-analyzer shows webpack -p does not remove development dependency react-dom.development.js
This is my webpack setup 这是我的webpack设置
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const SOURCE_DIR = './src';
const HtmlWebpackPluginConfig = new HtmlWebpackPlugin({
template: SOURCE_DIR + '/index.html',
filename: 'index.html',
inject: 'body'
});
module.exports = env => {
console.log(`Environment Configs: ${JSON.stringify(env) || 'Default'}`);
console.log(`
Available Configs:
--env.watch = true / false //for allow webpack to watch build
`)
let environment = env || {};
const {
watch,
analyze,
} = environment;
const configedAnalyzer = new BundleAnalyzerPlugin({
// Can be `server`, `static` or `disabled`.
// In `server` mode analyzer will start HTTP server to show bundle report.
// In `static` mode single HTML file with bundle report will be generated.
// In `disabled` mode you can use this plugin to just generate Webpack Stats JSON file by setting `generateStatsFile` to `true`.
analyzerMode: 'static',//was server
// Host that will be used in `server` mode to start HTTP server.
analyzerHost: '127.0.0.1',
// Port that will be used in `server` mode to start HTTP server.
analyzerPort: 9124,
// Path to bundle report file that will be generated in `static` mode.
// Relative to bundles output directory.
reportFilename: './../report/bundle_anlaysis.html',
// Module sizes to show in report by default.
// Should be one of `stat`, `parsed` or `gzip`.
// See "Definitions" section for more information.
defaultSizes: 'stat',
// Automatically open report in default browser
openAnalyzer: Boolean(analyze),
// If `true`, Webpack Stats JSON file will be generated in bundles output directory
generateStatsFile: Boolean(analyze),
// Name of Webpack Stats JSON file that will be generated if `generateStatsFile` is `true`.
// Relative to bundles output directory.
statsFilename: 'stats.json',
// Options for `stats.toJson()` method.
// For example you can exclude sources of your modules from stats file with `source: false` option.
// See more options here: https://github.com/webpack/webpack/blob/webpack-1/lib/Stats.js#L21
statsOptions: null,
// Log level. Can be 'info', 'warn', 'error' or 'silent'.
logLevel: 'info'
});
return {
entry: SOURCE_DIR + '/index.js',
output: {
path: path.resolve(__dirname, "dist"),
filename: 'bundle.js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env', 'react']
}
}
}
]
},
watchOptions: {
aggregateTimeout: 300,
poll: 1000
},
watch: Boolean(watch),
plugins: [HtmlWebpackPluginConfig, configedAnalyzer], //
devServer: {
contentBase: path.join(__dirname, "dist"),
compress: false,
port: 9123,
}
};
}
When I do webpack -p
file size is a lot smaller but this react-dom.development.js take over almost 50% of the size, in my case 500ish KB out of 1.1ish MB. 当我做webpack -p
文件大小要小得多,但是这个react-dom.development.js占用了近50%的大小,在我的情况下是500ish KB的1.1ish MB。
Report here: 报告在这里:
To see a demo of the report and how it got run you can check this repository. 要查看报告的演示及其运行方式,您可以查看此存储库。
NOTE: even I add NODE_ENV=production
, size is smaller but the development JavaScript file is still there! 注意:即使我添加NODE_ENV=production
,尺寸更小但开发JavaScript文件仍然存在!
Your application's process.env.NODE_ENV
variable needs to be set to production
within webpack's build script. 您的应用程序的process.env.NODE_ENV
变量需要在webpack的构建脚本中设置为production
。 React's Optimizing Performance documentation instructs webpack users to do this using webpack's DefinePlugin . React的Optimizing Performance文档指示webpack用户使用webpack的DefinePlugin执行此操作。
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
})
While it seems that the -p
option should set process.env.NODE_ENV
to production
, there is a caveat explained in Webpack's Specifying the Environment documentation that this is not set withtin webpack's build script (for what its worth, many developers have reported this as an issue ). 虽然似乎-p
选项应该将process.env.NODE_ENV
设置为production
,但是在Webpack的Specifying the Environment文档中有一个警告说明这不是使用 webpack的构建脚本设置的(为了它的价值,许多开发人员已将此报告为一个问题 )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.