Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function configureBundleStats(config) {
// Interactive tree map of the bundle.
if (interactiveBundleStats)
config.plugins.push(new BundleAnalyzerPlugin)
// JSON file containing the bundle stats.
if (bundleStats) {
config.plugins.push(new StatsWriterPlugin({
filename: 'bundle-stats.json',
// Include everything.
fields: null,
}))
}
}
// Ensures async components can be rendered sync server-side.
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1,
}),
];
case 'production_client':
return [
...commonPlugins,
new CleanPlugin(),
new webpack.EnvironmentPlugin({
BUILD: true,
BROWSER: true,
...env,
}),
new StatsWriterPlugin({
stats: {
all: false,
assets: true,
outputPath: true,
publicPath: true,
},
}),
// Support friendly stack traces for error reporting, but protect
// source code from being exposed.
new webpack.SourceMapDevToolPlugin({
filename: 'static/js/[name].[chunkhash:8].map',
noSources: true,
publicPath: `${rootUrl}/`,
}),
];
},
compress: {
sequences: true,
dead_code: true,
conditionals: true,
booleans: true,
unused: true,
if_return: true,
join_vars: true,
drop_console: true,
warnings: false
}
}),
// Alternative to StatsWriterPlugin.
new StatsWriterPlugin({
filename: 'manifest.json',
transform: function transformData(data) {
const chunks = {
app: data.assetsByChunkName.app[0],
style: data.assetsByChunkName.app[1],
vendors: data.assetsByChunkName.vendors[0]
};
return JSON.stringify(chunks);
}
})
]);
module.exports = config;
const defaultFields = [
'errors',
'warnings',
'version',
'hash',
'publicPath',
'assetsByChunkName',
'assets',
'entrypoints',
'chunks',
'modules',
'filteredModules',
'children'
]
config.plugins.push(new StatsWriterPlugin({
// saves relative to the output path
filename: 'stats.web.development.json',
fields: fields || defaultFields
}))
}
resolveLoader: {
root: [
path.resolve(path.join(path.dirname(require.resolve("webpack")), "../..")),
],
},
plugins: clean([
longTermCaching && new webpack.optimize.OccurenceOrderPlugin(),
new ChunkManifestPlugin({
filename: "chunk-manifest.json",
manifestVariable: "webpackManifest",
}),
new ExtractTextPlugin(`[name]${longTermCaching ? ".[chunkhash]" : ""}.css`),
new webpack.optimize.CommonsChunkPlugin({
name:"common",
}),
stats && new StatsPlugin.StatsWriterPlugin({
fields: ["assets", "assetsByChunkName", "chunks", "errors", "warnings", "version", "hash", "time", "filteredModules", "children", "modules"],
}),
minify && new webpack.DefinePlugin({
'process.env': {NODE_ENV: '"production"'},
}),
// TODO: should this be done as babel plugin?
minify && new webpack.optimize.UglifyJsPlugin(),
!minify && new webpack.SourceMapDevToolPlugin(),
hot && new webpack.HotModuleReplacementPlugin(),
hot && new webpack.NoErrorsPlugin(),
]),
};
}
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
);
} else if (config.__PROD__) {
debug('Enable plugins for production (OccurenceOrder, Dedupe & UglifyJS).');
webpackConfig.plugins.push(
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin({
compress: {
unused: true,
dead_code: true,
warnings: false
}
}),
new StatsWriterPlugin({
chunkModules: true,
filename: 'stats.json'
})
);
}
// ------------------------------------
// Pre-Loaders
// ------------------------------------
webpackConfig.module.preLoaders = [
{
test: /\.js$/,
loader: 'eslint',
exclude: /node_modules/
}
];
minify: {
collapseWhitespace: true
}
})
]
if (__DEV__) {
debug('Enable plugins for live development (HMR, NoErrors).')
webpackConfig.plugins.push(
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
)
} else if (__PROD__) {
debug('Enable plugins for isomorphic rendering.')
webpackConfig.plugins.unshift(
new StatsWriterPlugin({
filename: config.utils_paths.base('webpack-stats.json')
}),
new AssetsPlugin(),
new IsomorphicTools({assets: {}})
)
debug('Enable plugins for production (OccurenceOrder, Dedupe & UglifyJS).')
webpackConfig.plugins.push(
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin({
compress: {
screw_ie8: true,
unused: true,
dead_code: true,
warnings: false,
drop_console: true
module.exports = () =>
plugin(
new StatsWriterPlugin({
filename: '../stats/stats.json'
})
);
__DEV__: JSON.stringify(NODE_ENV === "development"),
__PRODUCTION__: JSON.stringify(NODE_ENV === "production")
});
const HMR = new webpack.HotModuleReplacementPlugin();
const hashedModuleIds = new webpack.HashedModuleIdsPlugin();
const banner = new webpack.BannerPlugin({
banner: BANNER,
raw: false,
entryOnly: false,
exclude: /\.svg$/
});
const buildInfo = new StatsWriterPlugin({
filename: "stats.json"
});
export { define, HMR, hashedModuleIds, banner, buildInfo };
sequences: true,
dead_code: true,
conditionals: true,
booleans: true,
unused: true,
if_return: true,
join_vars: true,
drop_console: true,
warnings: false
}
}
})
];
config.plugins.push(
new StatsWriterPlugin({
filename: 'manifest.json',
transform: function transformData(data) {
const chunks = {
app: data.assetsByChunkName.app[0],
style: data.assetsByChunkName.app[1],
vendors: data.assetsByChunkName.vendor
};
return JSON.stringify(chunks);
}
})
);
config = extractCSS(config);
break;
case developmentMode: