const production = process.env.NODE_ENV === 'production'; const TerserPlugin = require('terser-webpack-plugin'); const nodeExternals = require('webpack-node-externals'); const path = require('path'); module.exports = (directory) => { return { entry: path.join(directory, './dist/index.js'), output: { filename: 'index.umd.js', path: path.join(directory, 'dist'), libraryTarget: 'umd' }, externals: [ nodeExternals({ modulesDir: path.join(directory, 'node_modules') }), nodeExternals({ modulesDir: path.join(__dirname, 'node_modules') }) ], module: { rules: [ { enforce: 'pre', test: /\.js$/, loader: 'source-map-loader' } ] }, resolve: { extensions: ['.tsx', '.ts', '.js'] }, devtool: production ? 'source-map' : 'cheap-module-source-map', mode: production ? 'production' : 'development', optimization: { minimizer: [new TerserPlugin()] } }; };