scratch-desktop/webpack.renderer.additions.js
Christopher Willis-Ford c9bcd14015 Add source-map-loader
2018-12-12 09:05:19 -08:00

88 lines
2.8 KiB
JavaScript

const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const webpack = require('webpack');
const isProduction = (process.env.NODE_ENV === 'production');
console.log(`Renderer 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',
['react-intl', {
messagesDir: './translations/messages/'
}]
],
presets: [
['@babel/preset-env', {targets: {electron: '3.0.2'}}],
'@babel/preset-react'
]
};
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
},
// Add a new rule for the other files we want to run through babel
{
test: /\.jsx?$/,
include: [
path.resolve(__dirname, 'src', 'renderer'),
/node_modules[\\/]scratch-[^\\/]+[\\/]src/
],
loader: 'babel-loader',
options: babelOptions
},
{
test: /.jsx?$/,
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: false, // disable this if UglifyJSPlugin takes too long and/or runs out of memory
uglifyOptions: {
compress: isProduction ? {} : false,
mangle: isProduction
}
})],
splitChunks: {
chunks: 'all'
}
},
plugins: [
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, 'node_modules', 'scratch-gui', 'dist', 'static'),
to: 'static'
}
]),
new webpack.SourceMapDevToolPlugin({
filename: '[file].map'
})
],
resolve: {
symlinks: false
}
};