From 0f461289800642d6262bbb06cb1a86007d11bb94 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Tue, 18 Feb 2025 20:24:07 +0200 Subject: [PATCH] Set lib.js output path to data --- webpack.config.js | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index 242c1568e..3579a3cae 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,30 +1,43 @@ import process from 'node:process'; import path from 'node:path'; -import os from 'node:os'; import isDocker from 'is-docker'; /** * Get the Webpack configuration for the public/lib.js file. + * 1. Docker has got cache and the output file pre-baked. + * 2. Non-Docker environments use the global DATA_ROOT variable to determine the cache and output directories. * @param {boolean} forceDist Whether to force the use the /dist folder. * @returns {import('webpack').Configuration} + * @throws {Error} If the DATA_ROOT variable is not set. * */ export default function getPublicLibConfig(forceDist = false) { function getCacheDirectory() { - // Docker got cache pre-baked into the image. if (forceDist || isDocker()) { return path.resolve(process.cwd(), 'dist/webpack'); } - // Data root is set (should be the case 99.99% of the time). if (typeof globalThis.DATA_ROOT === 'string') { - return path.resolve(globalThis.DATA_ROOT, '_cache', 'webpack'); + return path.resolve(globalThis.DATA_ROOT, '_webpack', 'cache'); } - // Fallback to the system temp directory. - return path.resolve(os.tmpdir(), 'webpack'); + throw new Error('DATA_ROOT variable is not set.'); + } + + function getOutputDirectory() { + if (forceDist || isDocker()) { + return path.resolve(process.cwd(), 'dist'); + } + + if (typeof globalThis.DATA_ROOT === 'string') { + return path.resolve(globalThis.DATA_ROOT, '_webpack', 'output'); + } + + throw new Error('DATA_ROOT variable is not set.'); } const cacheDirectory = getCacheDirectory(); + const outputDirectory = getOutputDirectory(); + return { mode: 'production', entry: './public/lib.js', @@ -51,7 +64,7 @@ export default function getPublicLibConfig(forceDist = false) { hints: false, }, output: { - path: path.resolve(process.cwd(), 'dist'), + path: outputDirectory, filename: 'lib.js', libraryTarget: 'module', },