aboutsummaryrefslogtreecommitdiffstats
path: root/webpack.config.js
diff options
context:
space:
mode:
authorGravatar Joe Banks <[email protected]>2020-10-12 13:34:55 +0100
committerGravatar Joe Banks <[email protected]>2020-10-12 13:34:55 +0100
commit4def3e1a76bc888113228ffc4a083827040a5b69 (patch)
tree192dfa198f69a670c5d88355f9d68128f6facf43 /webpack.config.js
parentMerge pull request #21 from python-discord/sentry/add-sentry (diff)
Change build system away from create-react-app
Diffstat (limited to 'webpack.config.js')
-rw-r--r--webpack.config.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000..1a98131
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,87 @@
+const path = require("path")
+const HtmlWebpackPlugin = require("html-webpack-plugin");
+const webpack = require("webpack")
+
+module.exports = (env) => {
+ return {
+ entry: "./src/index.tsx",
+ mode: env,
+ output: {
+ path: path.resolve(__dirname, "../build/js"),
+ filename: "[name].bundle.js",
+ publicPath: "/",
+ devtoolModuleFilenameTemplate: "file:///" + path.resolve(__dirname, "[resource-path]?[loaders]")
+ },
+ resolve: {
+ extensions: ['.js', '.jsx', '.ts', '.tsx']
+ },
+ module: {
+ rules: [
+ {
+ test: /\.m?js$/,
+ exclude: /(node_modules|bower_components)/,
+ use: {
+ loader: "swc-loader",
+ options: {
+ jsc: {
+ parser: {
+ syntax: "ecmascript",
+ jsx: true,
+ dynamicImport: true
+ },
+ transform: {
+ react: {
+ pragma: "React.createElement",
+ pragmaFrag: "React.Fragment",
+ throwIfNamespace: true,
+ development: false,
+ useBuiltins: false
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ test: /\.tsx?$/,
+ exclude: /(node_modules|bower_components)/,
+ use: {
+ loader: "swc-loader",
+ options: {
+ jsc: {
+ parser: {
+ syntax: "typescript",
+ tsx: true,
+ dynamicImport: true
+ }
+ }
+ }
+ }
+ },
+ {
+ test: /\.svg$/,
+ loader: 'svg-inline-loader'
+ }
+ ]
+ },
+ devServer: {
+ contentBase: path.join(__dirname, 'public'),
+ compress: true,
+ port: 3000,
+ historyApiFallback: true,
+ },
+ plugins: [
+ new HtmlWebpackPlugin({
+ inject: true,
+ template: 'public/index.html'
+ }),
+ new webpack.EnvironmentPlugin({
+ NODE_ENV: "production",
+ REACT_APP_SHA: "development",
+ REACT_APP_SENTRY_DSN: "development",
+ REACT_APP_BRANCH: "development",
+ REACT_APP_OAUTH2_CLIENT_ID: "0"
+ })
+ ]
+ }
+}