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
|
/* eslint-disable */
const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const babelPlugin = path.resolve(__dirname, './node_modules/react-hot-loader/babel');
module.exports = {
entry: ['./src/index'],
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js',
},
module: {
rules: [
{
exclude: /node_modules|packages/,
test: /\.js$/,
use: ['react-hot-loader/webpack', 'babel-loader'],
},
{
include: /node_modules/,
test: /\.js$/,
use: {
loader: 'react-hot-loader/webpack',
},
},
/*
// babel is an option, but slow option
{
include: /node_modules/,
test: /\.js$/,
use: {
loader: 'babel-loader',
options: {
// plugins: ['react-hot-loader/babel'] // <<----- you need this
plugins: [babelPlugin], // you DON'T need this
},
},
},
/* */
],
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx'],
alias: {
// you don't need this
react: path.resolve(path.join(__dirname, './node_modules/react')),
'react-hot-loader': path.resolve(path.join(__dirname, './node_modules/react-hot-loader')),
'babel-core': path.resolve(path.join(__dirname, './node_modules/@babel/core')),
},
},
plugins: [new HtmlWebpackPlugin(), new webpack.NamedModulesPlugin()],
};
|