/** * Webpack configuration for building unit tests */ /* eslint-disable @typescript-eslint/no-var-requires */ var path = require('path'); var webpack = require('webpack'); module.exports = () => { const statsConfig = { builtAt: true, children: false, chunks: false, chunkGroups: false, chunkModules: false, chunkOrigins: false, colors: true, entrypoints: true, } return { plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': "\"development\"", }), new webpack.ProvidePlugin({ // Automtically detect jQuery and $ as free var in modules // and inject the jquery library // This is required by many jquery plugins // http://stackoverflow.com/questions/29080148/expose-jquery-to-real-window-object-with-webpack jquery: "jquery", jQuery: "jquery", $: "jquery", }), ], entry: "./test/index.js", target: "web", devtool: "source-map", output: { path: path.resolve(__dirname, "./"), filename: "test/test.bundle.js", }, module: { rules: [ { test: /\.tsx?$/, loader: 'ts-loader', exclude: /node_modules/, }, { test: /\.(jsx)$/, exclude: /node_modules/, use: { loader: "babel-loader", }, }, { test: /\.s?css$/, loader: 'null-loader', }, ], }, optimization: { removeAvailableModules: true, removeEmptyChunks: true, mergeDuplicateChunks: true, flagIncludedChunks: true, occurrenceOrder: true, sideEffects: true, providedExports: true, usedExports: true, concatenateModules: false, namedModules: false, namedChunks: false, minimize: false, portableRecords: true, splitChunks: { cacheGroups: { vendor: { test: /[\\/]node_modules[\\/]/, name: `tests/vendor`, chunks: 'all', }, }, }, }, resolve: { extensions: [ ".tsx", ".ts", ".js", ".jsx", ], }, stats: statsConfig, }; };