// Apply all the configuration provided in the .env file. require("dotenv").config(); const fs = require("fs"); const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin"); const extensions = [".ts", ".tsx", ".js"]; // TODO: There is some weird issue with including paths.ts here const postCSSConfigPath = "./src/core/build/postcss.config"; const appDirectory = fs.realpathSync(process.cwd()); const styleLoader = { loader: require.resolve("style-loader"), options: { sourceMap: true, hmr: true, }, }; module.exports = { title: "Coral 5.0", source: "./src", typescript: true, host: process.env.HOST || "0.0.0.0", port: parseInt(process.env.DOCZ_PORT, 10) || 3030, codeSandbox: false, // Too large to create code sandboxes.. modifyBundlerConfig: config => { config.entry.app.push( `${appDirectory}/src/core/client/ui/theme/variables.css.ts` ); config.module.rules.push({ test: /\.css\.ts$/, use: [ styleLoader, { loader: require.resolve("css-loader"), options: { modules: true, importLoaders: 2, localIdentName: "[name]-[local]-[hash:base64:5]", sourceMap: true, }, }, { loader: require.resolve("postcss-loader"), options: { config: { path: postCSSConfigPath, }, parser: "postcss-js", }, }, { loader: require.resolve("babel-loader"), options: { configFile: false, babelrc: false, presets: [ "@babel/typescript", [ "@babel/env", { targets: { node: "current" }, modules: "commonjs" }, ], ], // This is a feature of `babel-loader` for webpack (not Babel itself). // It enables caching results in ./node_modules/.cache/babel-loader/ // directory for faster rebuilds. cacheDirectory: true, }, }, ], }); config.module.rules.push({ test: /\.css$/, use: [ styleLoader, { loader: require.resolve("css-loader"), options: { modules: true, importLoaders: 1, localIdentName: "[name]-[local]-[hash:base64:5]", sourceMap: true, }, }, { loader: require.resolve("postcss-loader"), options: { config: { path: postCSSConfigPath, }, }, }, ], }); config.resolve.plugins = [ new TsconfigPathsPlugin({ extensions, // TODO: There is some weird issue with including paths.ts here configFile: "./src/core/client/tsconfig.json", }), ]; // fs.writeFileSync(path.resolve(__dirname, "tmp"), stringify(config, null, 2)); return config; }, };