st-bundle
Version:
CLI for watching and bundling SpringType projects.
41 lines (40 loc) • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ProductionContext_1 = require("./ProductionContext");
const codeSplittingStage_1 = require("./stages/codeSplittingStage");
const finalStage_1 = require("./stages/finalStage");
const generationStage_1 = require("./stages/generationStage");
const moduleLinkStage_1 = require("./stages/moduleLinkStage");
const preparationStage_1 = require("./stages/preparationStage");
const referenceLinkStage_1 = require("./stages/referenceLinkStage");
const transpileStage_1 = require("./stages/transpileStage");
async function productionMain(props) {
const productionContext = ProductionContext_1.createProductionContext(props);
const flow = { productionContext, ctx: props.ctx, packages: props.packages };
/** Stage 1 */
// Replace process, add polyfills
// unwrap if conditions with dead code elimination
// replace FuseBox.iServer and FuseBox.isBrowser
// some other
preparationStage_1.preparationStage(flow);
// after this stage, productionContext has:
// productionContext.productionPackages which contain transform (but not transpiled sources ready for further transformations)
// TREE SHAKING STAGES *********************************************************************************************************
/** Stage 2 */
moduleLinkStage_1.moduleLinkStage(flow);
// at this stage we need to resolve and most importantly link all production modules and packages for further treeshaking
// and other manupulations
// having import references in places and we now link all the imports and exports
// to count references
referenceLinkStage_1.referenceLinkStage(flow);
//treeShakingStage(flow);
codeSplittingStage_1.codeSplittingStage(flow);
transpileStage_1.transpileStage(flow);
generationStage_1.generationStage(flow);
// writing bundles and such
const data = await finalStage_1.finalStage(flow);
props.ctx.log.stopStreaming();
props.ctx.ict.sync('complete', { bundles: data.bundles, ctx: props.ctx, packages: props.packages });
return data;
}
exports.productionMain = productionMain;