1
0
Fork 0
VaultUI/webpack.config.js
2021-05-16 11:40:31 +01:00

66 lines
1.6 KiB
JavaScript

const path = require('path');
const webpack = require('webpack');
var os = require("os");
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { GitRevisionPlugin } = require('git-revision-webpack-plugin');
const gitRevisionPlugin = new GitRevisionPlugin();
const VERBOSE = Object.getOwnPropertyNames(process.env).includes("VERBOSE") || !true;
const MODE = process.env.WEBPACK_MODE || "production"
const DEBUG = MODE != "production";
let commitHash = gitRevisionPlugin.commithash();
module.exports = {
mode: MODE,
cache: DEBUG,
entry: './src/main.ts',
output: {
path: path.resolve(__dirname, 'dist'),
chunkFilename: '[name].js',
filename: '[name].[contenthash].js',
},
stats: {
preset: VERBOSE ? "detailed" : "normal",
colors: true,
timings: true,
},
plugins: [
new MiniCssExtractPlugin(),
new HtmlWebpackPlugin({ title: "VaultUI" }),
new webpack.DefinePlugin({
BUILD_STRING:
JSON.stringify(`Built At: ${new Date().toString()} by ${os.userInfo().username}@${os.hostname()} on commit ${commitHash}`),
})
],
devServer: {
open: process.env.BROWSER || "microsoft-edge-dev",
},
resolve: {
modules: ['node_modules'],
extensions: ['.tsx', '.ts', '.js', ".mjs"],
},
optimization: {
splitChunks: {
chunks: 'all',
},
},
module: {
rules: [
{
test: /\.(sa|sc|c)ss$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
"sass-loader"
],
},
{ test: /\.tsx?$/, loader: "ts-loader" }
],
},
};