diff options
Diffstat (limited to 'webpack.config.js')
-rw-r--r-- | webpack.config.js | 63 |
1 files changed, 38 insertions, 25 deletions
diff --git a/webpack.config.js b/webpack.config.js index 72dad9493..a153616b8 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,24 +1,25 @@ +/* eslint-disable node/no-unpublished-require */ const path = require('path'); const webpack = require('webpack'); -const CopyWebpackPlugin = require('copy-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); +const { parsed } = require('dotenv').config(); const plugins = [ - new CopyWebpackPlugin([ - { - from: 'deploy', - to: path.join(__dirname, 'build'), - }, - ]), new HtmlWebpackPlugin({ title: 'Caching', }), - new ForkTsCheckerWebpackPlugin({ - tslint: true, - // memoryLimit: 4096, - useTypescriptIncrementalApi: true, - }), + // new ForkTsCheckerWebpackPlugin({ + // typescript: { + // // useTypescriptIncrementalApi: true, + // eslint: true, + // memoryLimit: 8192, + // }, + // // tslint: true, + // // memoryLimit: 4096, + // // useTypescriptIncrementalApi: true, + // // tslintAutoFix: true, + // }), new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), new webpack.ProvidePlugin({ process: 'process/browser' }), new webpack.HotModuleReplacementPlugin(), @@ -26,12 +27,12 @@ const plugins = [ function transferEnvironmentVariables() { const prefix = '_CLIENT_'; - const { parsed } = require('dotenv').config(); if (!parsed) { return; } const resolvedClientSide = Object.keys(parsed).reduce((mapping, envKey) => { if (envKey.startsWith(prefix)) { + // eslint-disable-next-line mapping[`process.env.${envKey.replace(prefix, '')}`] = JSON.stringify(parsed[envKey]); } return mapping; @@ -58,7 +59,7 @@ module.exports = { publicPath: '/', }, resolve: { - extensions: ['.js', '.ts', '.tsx'], + extensions: ['.js', '.jsx', '.ts', '.tsx'], fallback: { fs: false, tls: false, @@ -68,6 +69,8 @@ module.exports = { crypto: false, assert: false, os: false, + querystring: require.resolve('querystring-es3'), + url: require.resolve('url'), path: require.resolve('path-browserify'), http: require.resolve('http-browserify'), https: require.resolve('https-browserify'), @@ -89,6 +92,11 @@ module.exports = { ], }, { + test: /\.jsx$/, + use: { loader: 'babel-loader' }, + exclude: [/node_modules/, /public/], + }, + { test: /\.m?js/, resolve: { fullySpecified: false, @@ -99,18 +107,23 @@ module.exports = { use: 'file-loader?name=fonts/[name].[ext]!static', }, { - test: /\.(scss|css)$/, - // test: /\.scss|css$/, + test: /\.scss|css$/, + exclude: /\.module\.scss$/i, use: [ - { - loader: 'style-loader', - }, - { - loader: 'css-loader', - }, - { - loader: 'sass-loader', - }, + { loader: 'style-loader' }, // eslint-disable-next-line prettier/prettier + { loader: 'css-loader' }, + { loader: 'sass-loader' }, + ], + }, + + // -------- + // SCSS MODULES - all have .module. in their name and can export to .tsx + { + test: /\.module\.scss$/i, + use: [ + { loader: 'style-loader' }, // eslint-disable-next-line prettier/prettier + { loader: 'css-loader', options: { modules: true } }, + { loader: 'sass-loader' }, ], }, { |