'use strict'; // pull in the 'path' module from node const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const webpack = require('webpack'); const { GitRevisionPlugin } = require('git-revision-webpack-plugin'); const gitRevisionPlugin = new GitRevisionPlugin({ branch: true, commithashCommand: 'rev-list --max-count=1 --no-merges --abbrev-commit HEAD', }); // export the configuration as an object module.exports = { // development mode will set some useful defaults in webpack mode: 'development', // the entry point is the top of the tree of modules. // webpack will bundle this file and everything it references. entry: './src/react/index.tsx', // we specify we want to put the bundled result in the matching build/ folder output: { filename: 'index.js', path: path.resolve(__dirname, 'build/react'), }, module: { // rules tell webpack how to handle certain types of files rules: [ // at the moment the only custom handling we have is for typescript files // .ts and .tsx files get passed to ts-loader { test: /\.tsx?$/, loader: 'ts-loader', }, { test: /node_modules\/JSONStream\/index\.js$/, loader: 'shebang-loader' }, { test: /\.css$/i, use: ['style-loader', 'css-loader'], }, { test: /\.(woff|woff2|eot|ttf|svg)$/, type: 'asset/resource', }, ], }, resolve: { // specify certain file extensions to get automatically appended to imports // ie we can write `import 'index'` instead of `import 'index.ts'` extensions: ['.ts', '.tsx', '.js'], }, plugins: [ new HtmlWebpackPlugin({ template: 'src/react/index.html', }), gitRevisionPlugin, new webpack.DefinePlugin({ VERSION: JSON.stringify(gitRevisionPlugin.version()), COMMITHASH: JSON.stringify(gitRevisionPlugin.commithash()), BRANCH: JSON.stringify(gitRevisionPlugin.branch()), LASTCOMMITDATETIME: JSON.stringify(gitRevisionPlugin.lastcommitdatetime()), }) ], target: 'electron-renderer' };