aboutsummaryrefslogtreecommitdiffstats
path: root/packages/dev-tools-pages/webpack.config.js
diff options
context:
space:
mode:
authorAugust Skare <post@augustskare.no>2018-10-19 22:02:15 +0800
committerAugust Skare <post@augustskare.no>2018-10-19 22:05:09 +0800
commit7d7f54c751a2a5b8fca6791fb6685f4b5f969fff (patch)
treeab720f884ddf74953e119c7207ef4e52eb1760aa /packages/dev-tools-pages/webpack.config.js
parent736e1717fa4e59594e76694f7f6cc9dd0b45f1a9 (diff)
downloaddexon-sol-tools-7d7f54c751a2a5b8fca6791fb6685f4b5f969fff.tar
dexon-sol-tools-7d7f54c751a2a5b8fca6791fb6685f4b5f969fff.tar.gz
dexon-sol-tools-7d7f54c751a2a5b8fca6791fb6685f4b5f969fff.tar.bz2
dexon-sol-tools-7d7f54c751a2a5b8fca6791fb6685f4b5f969fff.tar.lz
dexon-sol-tools-7d7f54c751a2a5b8fca6791fb6685f4b5f969fff.tar.xz
dexon-sol-tools-7d7f54c751a2a5b8fca6791fb6685f4b5f969fff.tar.zst
dexon-sol-tools-7d7f54c751a2a5b8fca6791fb6685f4b5f969fff.zip
Feature/build step (#2)
* BundleAnalyzerPlugin * lazy load highlight.js * seperate bundles for each page * prerender apps to html on build * preload important font files * dont prerender code copy button * fix woff2 variant of font * added missing doctype * remove metatags component
Diffstat (limited to 'packages/dev-tools-pages/webpack.config.js')
-rw-r--r--packages/dev-tools-pages/webpack.config.js27
1 files changed, 23 insertions, 4 deletions
diff --git a/packages/dev-tools-pages/webpack.config.js b/packages/dev-tools-pages/webpack.config.js
index a016c6b04..d025737f7 100644
--- a/packages/dev-tools-pages/webpack.config.js
+++ b/packages/dev-tools-pages/webpack.config.js
@@ -1,13 +1,24 @@
const path = require('path');
const webpack = require('webpack');
const TerserPlugin = require('terser-webpack-plugin');
+const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
+const HtmlWebpackPlugin = require('html-webpack-plugin');
const childProcess = require('child_process');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const CleanWebpackPlugin = require('clean-webpack-plugin');
+
+const pages = require('./pages');
const config = {
- entry: ['./ts/index.tsx'],
+ entry: {
+ compiler: './ts/pages/Compiler.tsx',
+ cov: './ts/pages/Cov.tsx',
+ profiler: './ts/pages/Profiler.tsx',
+ trace: './ts/pages/Trace.tsx',
+ },
output: {
path: path.join(__dirname, '/public'),
- filename: 'bundle.js',
+ filename: 'bundle-[name].js',
chunkFilename: 'bundle-[name].js',
publicPath: '/',
},
@@ -70,17 +81,25 @@ const config = {
};
module.exports = (_env, argv) => {
- let plugins = [];
+ let plugins = [
+ new CleanWebpackPlugin('public'),
+ ...pages.map(p => new HtmlWebpackPlugin(p)),
+ new CopyWebpackPlugin([{ from: 'assets/crawl.html', to: 'index.html' }, { from: 'assets/fonts', to: 'fonts' }]),
+ ];
if (argv.mode === 'development') {
config.mode = 'development';
} else {
config.mode = 'production';
+ config.output.filename = 'bundle-[name].[chunkhash].js';
+ config.output.chunkFilename = 'bundle-[name].[chunkhash].js';
+
plugins = plugins.concat([
new webpack.DefinePlugin({
'process.env': {
- NODE_ENV: JSON.stringify(process.env.NODE_ENV),
+ NODE_ENV: JSON.stringify(process.env.NODE_ENV || config.mode),
},
}),
+ //new BundleAnalyzerPlugin(),
]);
}
console.log('i 「atl」: Mode: ', config.mode);