Spaces:
Running
Running
import process from 'node:process'; | |
import path from 'node:path'; | |
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() { | |
if (forceDist || isDocker()) { | |
return path.resolve(process.cwd(), 'dist/webpack'); | |
} | |
if (typeof globalThis.DATA_ROOT === 'string') { | |
return path.resolve(globalThis.DATA_ROOT, '_webpack', 'cache'); | |
} | |
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', | |
cache: { | |
type: 'filesystem', | |
cacheDirectory: cacheDirectory, | |
store: 'pack', | |
compression: 'gzip', | |
}, | |
devtool: false, | |
watch: false, | |
module: {}, | |
stats: { | |
preset: 'minimal', | |
assets: false, | |
modules: false, | |
colors: true, | |
timings: true, | |
}, | |
experiments: { | |
outputModule: true, | |
}, | |
performance: { | |
hints: false, | |
}, | |
output: { | |
path: outputDirectory, | |
filename: 'lib.js', | |
libraryTarget: 'module', | |
}, | |
}; | |
} | |