Spaces:
Paused
Paused
| 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', | |
| }, | |
| }; | |
| } | |