@ui5/builder
Version:
UI5 Tooling - Builder
38 lines (35 loc) • 1.48 kB
JavaScript
const moduleBundler = require("../../processors/bundlers/moduleBundler");
const ReaderCollectionPrioritized = require("@ui5/fs").ReaderCollectionPrioritized;
/**
* Generates a bundle based on the given bundle definition
*
* @public
* @alias module:@ui5/builder.tasks.generateBundle
* @param {Object} parameters Parameters
* @param {module:@ui5/fs.DuplexCollection} parameters.workspace DuplexCollection to read and write files
* @param {Collection} parameters.dependencies Collection to read dependency files
* @param {Object} parameters.options Options
* @param {string} parameters.options.projectName Project name
* @param {Object} parameters.options.bundleDefintion Module bundle definition
* @param {Object} parameters.options.bundleOptions Module bundle options
* @returns {Promise} Promise resolving with <code>undefined</code> once data has been written
*/
module.exports = function({workspace, dependencies, options}) {
const combo = new ReaderCollectionPrioritized({
name: `libraryBundler - prioritize workspace over dependencies: ${options.projectName}`,
readers: [workspace, dependencies]
});
return combo.byGlob("/resources/**/*.{js,json,xml,html,properties,library}").then((resources) => {
return moduleBundler({
options: {
bundleDefinition: options.bundleDefinition,
bundleOptions: options.bundleOptions
},
resources
}).then((bundles) => {
bundles.forEach((bundle) => {
workspace.write(bundle);
});
});
});
};