const HtmlWebpackPlugin = require('html-webpack-plugin'); const path = require('path'); const TerserPlugin = require("terser-webpack-plugin"); const webpack = require("webpack"); const childProcess = require("child_process"); function git(command) { return childProcess.execSync(`git ${command}`).toString().trim(); } module.exports = { mode: 'production', entry: { "demo.min": './src/index.js' }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', }, }, { test: /\.less$/i, use: ['style-loader', 'css-loader', 'less-loader'], }, ], }, devtool: 'source-map', resolve: { extensions: ['.js', '.ts'], alias: { '@': path.resolve(__dirname, './src'), }, }, optimization: { usedExports: false, minimize: true, minimizer: [ new TerserPlugin({ include: /\.min/, parallel: true, terserOptions: { output: { comments: false, }, }, }), new webpack.BannerPlugin({ banner: `time: ${new Date().toLocaleString("en-US")}; branch: ${git( "name-rev --name-only HEAD" )} commit: ${git("rev-parse HEAD")}`, }) ], }, };