VulpesOS/gaia/apps/email/build/gelam_worker.build.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

110 lines
3.3 KiB
JavaScript
Executable file

{
appDir: '../js/ext',
baseUrl: '.',
dir: '../../../build_stage/email/js/ext',
mainConfigFile: '../js/ext/worker-config.js',
// Do not optimize here, the general gaia email optimization
// pass will do that, if it is desired.
optimize: 'none',
// Do not try to optimize CSS, that will be done in gaia
// email build
optimizeCss: 'none',
// Be sure to normalize all define() calls by extracting
// dependencies so Function toString is not needed, and
// lower capability devices like Tarako can optimize
// memory by discarding function sources. This is
// automatically done when an 'optimize' value other than
// 'none' is used. This setting makes sure it happens for
// builds where 'none' is used for 'optimize'.
normalizeDirDefines: 'all',
// Remove the importScripts loading in worker-bootstrap source, since
// the assets will be inlined.
pragmas: {
buildExclude: true
},
onBuildWrite: function (id, path, contents) {
if (id === 'worker-bootstrap') {
// The loading kickoff is stripped out from the source worker-bootstrap by
// a pragma, because we want this to be at the end of the file, just for
// cleanliness and code understanding, after all the defines are done.
return contents + '\nrequire([\'worker-setup\']);';
} else {
return contents;
}
},
modules: [
{
// There is enough cross reference of shared dependencies that we risk
// loading duplicates for any other layers so just optimizing the initial
// one used at worker startup. We are making a tradeoff between memory vs
// initial load time. Since the email front end can start up without the
// full load of the rest of the code in the worker favor saving memory.
name: 'worker-bootstrap',
include: [
'alameda',
'worker-config',
'worker-setup',
// Searches can happen offline.
'searchfilter',
// Job/operations are currently not gated, although they could be...
'jobmixins',
'jobs/outbox',
'drafts/jobs',
// Common account logic is required for everything.
'accountmixins',
// Include the chews because they are common and small-ish.
'htmlchew',
'quotechew',
'mailchew',
// main-frame-setup also wants this, so will delete it after the main
// gaia app optimization runs, so include it now. Commonly needed at
// some point during startup anyway.
'addressparser',
// Other common-ish utilities.
'tcp-socket',
'mix',
'axe',
'errorutils',
'db/folder_info_rep',
'mimetypes',
'mimefuncs'
]
},
{
name: 'composite/configurator',
exclude: ['worker-bootstrap']
},
{
name: 'activesync/configurator',
// activesync/protocol needed for autodiscovery.
exclude: ['worker-bootstrap', 'activesync/protocol']
}
],
// Just strip comments, no code compression or mangling.
// Only active if optimize: 'uglify2'
uglify2: {
// Comment out the output section to get rid of line
// returns and tabs spacing.
output: {
beautify: true
}
},
// Keeping build dir since Makefile cleans it up and
// preps build dir with the shared directory
keepBuildDir: true,
removeCombined: true
}