From 9ed3fc52ff125ceed418286de5b13f515408796a Mon Sep 17 00:00:00 2001 From: c-bata Date: Mon, 7 Mar 2022 15:41:08 +0900 Subject: [PATCH] Refactor webpack.config.js --- package.json | 4 ++-- webpack.config.js | 47 +++++++++++++++++++++-------------------------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index a7ae9526..3338baf6 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ "scripts": { "fmt": "prettier --write \"optuna_dashboard/static/**/*.{ts,tsx}\" \"frontend_tests/*.{ts,tsx}\"", "lint": "eslint . --ext .ts,.tsx && prettier --list-different \"optuna_dashboard/static/**/*.{ts,tsx}\" \"frontend_tests/*.{ts,tsx}\"", - "watch": "NODE_ENV=development SKIP_TYPE_CHECK=true webpack --watch", + "watch": "NODE_ENV=development TYPESCRIPT_LOADER=esbuild-loader webpack --watch", "build": "webpack", - "build:dev": "NODE_ENV=development webpack", + "build:dev": "NODE_ENV=development TYPESCRIPT_LOADER=esbuild-loader webpack", "build:prd": "NODE_ENV=production webpack", "test": "jest frontend_tests" }, diff --git a/webpack.config.js b/webpack.config.js index 31ebb1ea..d92db7cb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,7 +2,25 @@ const webpack = require('webpack'); const mode = process.env.NODE_ENV === 'production' ? 'production' : 'development'; const isDev = mode === 'development'; -const skipTypeCheck = process.env.SKIP_TYPE_CHECK === 'true'; + +const typeScriptLoader = process.env.TYPESCRIPT_LOADER === "esbuild-loader" ? { + test: /\.tsx?$/, + exclude: [/node_modules/], + loader: 'esbuild-loader', + options: { + loader: 'tsx', + tsconfigRaw: require('./tsconfig.json') + } +} : { + test: /\.tsx?$/, + exclude: [/node_modules/], + loader: 'ts-loader', + options: { + configFile: __dirname + '/tsconfig.json', + transpileOnly: isDev, + happyPackMode: true + } +} var config = { mode, @@ -13,17 +31,7 @@ var config = { publicPath: '/public/' }, module: { - rules: [{ - oneOf: [ - { - test: /\.tsx?$/, - exclude: [/node_modules/], - loader: 'ts-loader', - options: { - configFile: __dirname + '/tsconfig.json' - } - } - ]}] + rules: [{oneOf: [typeScriptLoader]}] }, resolve: { extensions: ['.ts', '.tsx', '.js'] @@ -47,20 +55,7 @@ if (isDev) { } console.log('= = = = = = = = = = = = = = = = = = ='); console.log('DEVELOPMENT BUILD'); - console.log('= = = = = = = = = = = = = = = = = = ='); -} -if (skipTypeCheck) { - config.module.rules = [{ - test: /\.tsx?$/, - exclude: [/node_modules/], - loader: 'esbuild-loader', - options: { - loader: 'tsx', - tsconfigRaw: require('./tsconfig.json') - } - }] - console.log('= = = = = = = = = = = = = = = = = = ='); - console.log('Use esbuild-loader instead of ts-loader'); + console.log(process.env.TYPESCRIPT_LOADER === 'esbuild-loader' ? 'esbuild-loader' : 'ts-loader'); console.log('= = = = = = = = = = = = = = = = = = ='); }