11const themeBuilder = require ( "../processors/themeBuilder" ) ;
2+ const cssOptimizer = require ( "../processors/cssOptimizer" ) ;
23const ReaderCollectionPrioritized = require ( "@ui5/fs" ) . ReaderCollectionPrioritized ;
34const fsInterface = require ( "@ui5/fs" ) . fsInterface ;
45
@@ -12,9 +13,10 @@ const fsInterface = require("@ui5/fs").fsInterface;
1213 * @param {module:@ui5/fs.AbstractReader } parameters.dependencies Reader or Collection to read dependency files
1314 * @param {Object } parameters.options Options
1415 * @param {string } parameters.options.pattern Pattern to locate the files to be processed
16+ * @param {boolean } [parameters.options.compress=true] Whether or not to optimize the files
1517 * @returns {Promise<undefined> } Promise resolving with <code>undefined</code> once data has been written
1618 */
17- module . exports = function ( { workspace, dependencies, options} ) {
19+ module . exports = async function ( { workspace, dependencies, options} ) {
1820 const combo = new ReaderCollectionPrioritized ( {
1921 name : `theme - prioritize workspace over dependencies: ${ options . projectName } ` ,
2022 readers : [ workspace , dependencies ]
@@ -27,11 +29,13 @@ module.exports = function({workspace, dependencies, options}) {
2729 promises . push ( combo . byGlob ( options . librariesPattern ) ) ;
2830 }
2931
30- return Promise . all ( promises ) . then ( ( [ allResources , availableLibraries ] ) => {
31- if ( ! availableLibraries || availableLibraries . length === 0 ) {
32- // Try to build all themes
33- return allResources ;
34- }
32+ const [ allResources , availableLibraries ] = await Promise . all ( promises ) ;
33+
34+ let resources ;
35+ if ( ! availableLibraries || availableLibraries . length === 0 ) {
36+ // Try to build all themes
37+ resources = allResources ;
38+ } else {
3539 /* Don't try to build themes for libraries that are not available
3640 (maybe replace this with something more aware of which dependencies are optional and therefore
3741 legitimately missing and which not (fault case))
@@ -49,18 +53,21 @@ module.exports = function({workspace, dependencies, options}) {
4953 return false ;
5054 } ;
5155
52- return allResources . filter ( isAvailable ) ;
53- } ) . then ( ( resources ) => {
54- return themeBuilder ( {
55- resources,
56- fs : fsInterface ( combo ) ,
57- options : {
58- compress : true
59- }
60- } ) ;
61- } ) . then ( ( processedResources ) => {
62- return Promise . all ( processedResources . map ( ( resource ) => {
63- return workspace . write ( resource ) ;
64- } ) ) ;
56+ resources = await allResources . filter ( isAvailable ) ;
57+ }
58+ const processedResources = await themeBuilder ( {
59+ resources,
60+ fs : fsInterface ( combo )
6561 } ) ;
62+ const compress = options . compress !== false ;
63+ if ( compress ) {
64+ const cssResources = processedResources . filter ( ( resource ) => {
65+ return resource . getPath ( ) . endsWith ( ".css" ) ;
66+ } ) ;
67+ await cssOptimizer ( { resources : cssResources ,
68+ fs : fsInterface ( combo ) } ) ;
69+ }
70+ return Promise . all ( processedResources . map ( ( resource ) => {
71+ return workspace . write ( resource ) ;
72+ } ) ) ;
6673} ;
0 commit comments