UNPKG

paraview-glance

Version:

Web application for Visualizing Scientific and Medical datasets

99 lines (93 loc) 2.44 kB
const TerserPlugin = require('terser-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const merge = require('webpack-merge'); const baseConfig = require('./webpack.base.config'); const HOST = process.env.HOST; const PORT = process.env.PORT && Number(process.env.PORT); const htmlMinifyOptions = { collapseWhitespace: false, removeComments: true, removeRedundantAttributes: true, removeScriptTypeAttributes: true, removeStyleLinkTypeAttributes: true, useShortDoctype: true }; function htmlTemplateParameters({ useGA = false } = { useGA: false }) { return (compilation, assets, assetTags, options) => ({ compilation, webpackConfig: compilation.options, htmlWebpackPlugin: { tags: assetTags, files: assets, options, }, googleAnalytics: useGA, }); } module.exports = merge.smart(baseConfig, { mode: 'production', module: { rules: [ { test: /\.css$/, exclude: /node_modules/, use: [ MiniCssExtractPlugin.loader, { loader: 'css-loader', options: { modules: { localIdentName: '[folder]-[local]-[sha512:hash:base32:5]', }, }, }, ], }, { test: /\.s[ca]ss$/, use: [ MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader', ], }, { test: /\.css$/, exclude: /\.module\.css$/, include: /node_modules/, use: [MiniCssExtractPlugin.loader, 'css-loader'], }, ], }, optimization: { occurrenceOrder: true, minimizer: [ new TerserPlugin({ cache: true, parallel: true, sourceMap: true, }), ], }, plugins: [ new HtmlWebpackPlugin({ filename: 'index.html', template: 'static/index.html', inject: false, templateParameters: htmlTemplateParameters({ useGA: false }), minify: htmlMinifyOptions, }), new HtmlWebpackPlugin({ filename: 'index-ga.html', template: 'static/index.html', inject: false, templateParameters: htmlTemplateParameters({ useGA: true }), minify: htmlMinifyOptions, }), new MiniCssExtractPlugin({ filename: '[name].[contenthash].css', ignoreOrder: false, }), ], });