blob: eb5c8b91ee20fce4152b32a38fa56a4cfb696adf [file] [log] [blame]
Adrien Béraud824a7132021-04-17 17:25:27 -04001'use strict'
Adrien Béraudc4dd44a2021-04-08 01:05:24 -04002const path = require('path')
Adrien Béraud824a7132021-04-17 17:25:27 -04003require('dotenv').config({ path: path.resolve(__dirname, '..', '.env') })
Adrien Béraudc4dd44a2021-04-08 01:05:24 -04004const HtmlWebpackPlugin = require('html-webpack-plugin')
Adrien Béraud824a7132021-04-17 17:25:27 -04005const mode = process.env.NODE_ENV || 'development'
6
7let entry = [path.resolve(__dirname, 'src', 'index.js')]
8let plugins = [new HtmlWebpackPlugin({
9 template: path.resolve(__dirname, 'src', 'index.ejs')
10})]
11let devtool = undefined
12
13if (mode === 'development') {
14 const webpack = require('webpack')
15 entry = ['react-hot-loader/patch', 'webpack-hot-middleware/client', ...entry]
16 plugins = [new webpack.HotModuleReplacementPlugin(), ...plugins]
17 devtool = 'inline-source-map'
18}
19console.log(`Webpack configured for ${mode}`)
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040020
21module.exports = {
Adrien Béraud824a7132021-04-17 17:25:27 -040022 entry,
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040023 output: {
24 path: path.resolve(__dirname, 'dist'),
25 filename: 'bundle.js',
26 publicPath: '/'
27 },
Adrien Béraud824a7132021-04-17 17:25:27 -040028 devtool,
29 mode,
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040030 module: {
31 rules: [
32 {
33 test: /\.jsx?/,
34 exclude: /node_modules/,
35 use: {
36 loader: 'babel-loader',
37 options: {
Adrien Béraudf51408f2021-04-13 03:26:26 -040038 presets: [['@babel/preset-env', {
39 useBuiltIns: 'entry',
40 corejs:{ version: "3.10", proposals: true },
41 targets: { esmodules: true }
42 }], '@babel/preset-react']
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040043 }
44 }
45 },
46 {
Adrien Béraudfe56ba32021-04-08 00:32:11 -040047 test: /\.s[ac]ss$/i,
48 use: ['style-loader', 'css-loader', 'sass-loader'],
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040049 }
50 ]
51 },
Adrien Béraud824a7132021-04-17 17:25:27 -040052 plugins
Adrien Béraudc4dd44a2021-04-08 01:05:24 -040053}