const esbuild = require('esbuild'); const locales = require('../../locales'); const meta = require('../../package.json'); const watch = process.argv[2]?.includes('watch'); console.log('Starting SW building...'); esbuild.build({ entryPoints: [ `${__dirname}/src/sw.ts` ], bundle: true, format: 'esm', treeShaking: true, minify: process.env.NODE_ENV === 'production', absWorkingDir: __dirname, outbase: `${__dirname}/src`, outdir: `${__dirname}/../../built/_sw_dist_`, loader: { '.ts': 'ts' }, tsconfig: `${__dirname}/tsconfig.json`, define: { _VERSION_: JSON.stringify(meta.version), _LANGS_: JSON.stringify(Object.entries(locales).map(([k, v]) => [k, v._lang_])), _ENV_: JSON.stringify(process.env.NODE_ENV), _DEV_: process.env.NODE_ENV !== 'production', _PERF_PREFIX_: JSON.stringify('CherryPick:'), }, watch: watch ? { onRebuild(error, result) { if (error) console.error('SW: watch build failed:', error); else console.log('SW: watch build succeeded:', result); }, } : false, }).then(result => { if (watch) console.log('watching...'); else console.log('done,', JSON.stringify(result)); });