1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| const path = require('path'); const HtmlWebpackPlugin = require("html-webpack-plugin"); const {CleanWebpackPlugin} = require("clean-webpack-plugin"); const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const bundle_random_str = Math.random().toString(36).slice(-6);
module.exports = { entry: { index: './src/main.tsx' }, output: { path: path.resolve(__dirname, './dist'), filename: `assets/[name].${bundle_random_str}.bundle.js`, }, module: { rules: [ { test: /\.m?js$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'], }, }, }, { test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] }, { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/, }, ] }, plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ title: 'Webpack Test', template: path.resolve(__dirname, './public/index.html'), filename: 'index.html', }), new MiniCssExtractPlugin({ filename: `assets/style.${bundle_random_str}.css` }), ], resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx'] } }
|