@gip-recia/extended-uportal-header
Version:
a component to deport the uPortal menu
115 lines (110 loc) • 2.87 kB
JavaScript
/* eslint-disable */
const webpack = require('webpack');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const Dotenv = require('dotenv-webpack');
const BundleAnalyzerPlugin =
require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const PACKAGE = require('./package.json');
const currentDate = new Date().toLocaleString('en-US');
const banner = ()=>{
return `package : ${PACKAGE.name}\nversion : ${PACKAGE.version}\nauthor : ${PACKAGE.author}\nbuild time : ${currentDate}`
}
let config = {
entry: {
'extended-uportal-header': './src/extended-uportal-header.ts',
'extended-uportal-header.min': './src/extended-uportal-header.ts',
},
devtool: 'source-map',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'js/[name].js',
clean: true,
},
module: {
rules: [
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: [{ loader: 'babel-loader' }, { loader: 'ts-loader' }],
},
{
test: /\.scss$/,
exclude: [/node_modules/],
use: [{ loader: 'css-loader' }, { loader: 'sass-loader' }],
},
{
test: /\.(png|jpe?g|gif|svg)$/i,
use: [{ loader: 'file-loader' }],
},
],
},
resolve: {
extensions: [
'.tsx',
'.ts',
'.js',
'.css',
'.scss',
'.png',
'.jpg',
'.jpeg',
'.svg',
],
alias: {
'@helpers': path.resolve(__dirname, 'src/helpers/'),
'@services': path.resolve(__dirname, 'src/services/'),
'@styles': path.resolve(__dirname, 'src/styles/'),
'@locales': path.resolve(__dirname, 'src/locales/'),
'@images': path.resolve(__dirname, 'src/images/'),
},
},
devServer: {
allowedHosts: ['.server1.local', '.server2.local'],
static: {
directory: path.join(__dirname, 'samples'),
},
compress: true,
port: 8080,
},
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
include: /\.min\.js$/,
parallel: true,
extractComments: false,
}),
],
sideEffects: true,
}
};
module.exports = (env, argv) => {
if (argv.mode === 'development') {
config.plugins = [
new Dotenv(),
new HtmlWebpackPlugin({
filename: 'index.html',
chunks: ['extended-uportal-header'],
template: './samples/extended-uportal-header.html',
}),
new webpack.BannerPlugin({
banner: banner,
})
];
}
if (argv.mode === 'production') {
config.plugins = [
new Dotenv(),
new webpack.BannerPlugin({
banner: banner,
})
];
if (env.profiling) {
config.plugins.push(new BundleAnalyzerPlugin());
}
if (env.fortest) config.devtool = 'source-map';
}
return config;
}