scratch-desktop/webpack.main.additions.js
2018-12-21 11:27:35 -08:00

64 lines
2 KiB
JavaScript

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const webpack = require('webpack');
const isProduction = (process.env.NODE_ENV === 'production');
console.log(`Main module building in production mode? ${isProduction}`);
const babelOptions = {
// Explicitly disable babelrc so we don't catch various config
// in much lower dependencies.
babelrc: false,
plugins: [
'@babel/plugin-syntax-dynamic-import',
'@babel/plugin-transform-async-to-generator',
'@babel/plugin-proposal-object-rest-spread'
],
presets: [
['@babel/preset-env', {targets: {electron: '3.0.2'}}]
]
};
module.exports = {
mode: isProduction ? 'production' : 'development',
module: {
rules: [
// Override the *.js defaults from electron-webpack
// The test/include/exclude must match the defaults exactly for webpack-merge to do the override
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
options: babelOptions
},
{
test: /.js$/,
loader: 'source-map-loader',
enforce: 'pre'
}
]
},
optimization: {
// Use `--env.minify=false` to disable the UglifyJsPlugin instance automatically injected by electron-webpack.
// Otherwise it will do double-duty with this one.
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true,
sourceMap: true, // disable this if UglifyJSPlugin takes too long and/or runs out of memory
uglifyOptions: {
compress: isProduction ? {} : false,
mangle: isProduction
}
})
]
},
plugins: [
new webpack.SourceMapDevToolPlugin({
filename: '[file].map'
})
],
resolve: {
symlinks: false
}
};