import path from 'path' import Webpack from 'webpack' import WebpackDevServer from 'webpack-dev-server' import { logger } from './logger' import { getTempDir } from './directory' export const getWebpackCompiler = ( monorepoDir: string, mode = 'development' ) => { const tmpDir = getTempDir(monorepoDir) // eslint-disable-next-line @typescript-eslint/no-var-requires, node/global-require, @typescript-eslint/no-require-imports const webpackConfig = require(path.relative( __dirname, path.join(tmpDir, 'webpack.config.js') )) const config = { ...webpackConfig, mode } const compiler = Webpack(config) return { compiler, config, } } export const runWebpackDevServer = async (monorepoDir: string) => { const { compiler, config } = getWebpackCompiler(monorepoDir) const server = new WebpackDevServer( config.devServer, (compiler as unknown) as WebpackDevServer.Compiler ) logger.log('Starting webpack dev server...') await server.start() }