1
1
const themeBuilder = require ( "../processors/themeBuilder" ) ;
2
+ const cssOptimizer = require ( "../processors/cssOptimizer" ) ;
2
3
const ReaderCollectionPrioritized = require ( "@ui5/fs" ) . ReaderCollectionPrioritized ;
3
4
const fsInterface = require ( "@ui5/fs" ) . fsInterface ;
4
5
@@ -17,7 +18,7 @@ const fsInterface = require("@ui5/fs").fsInterface;
17
18
* @param {boolean } [parameters.options.compress=true]
18
19
* @returns {Promise<undefined> } Promise resolving with <code>undefined</code> once data has been written
19
20
*/
20
- module . exports = function ( { workspace, dependencies, options} ) {
21
+ module . exports = async function ( { workspace, dependencies, options} ) {
21
22
const combo = new ReaderCollectionPrioritized ( {
22
23
name : `theme - prioritize workspace over dependencies: ${ options . projectName } ` ,
23
24
readers : [ workspace , dependencies ]
@@ -30,13 +31,13 @@ module.exports = function({workspace, dependencies, options}) {
30
31
promises . push ( combo . byGlob ( options . librariesPattern ) ) ;
31
32
}
32
33
33
- const compress = options . compress === undefined ? true : options . compress ;
34
+ const [ allResources , availableLibraries ] = await Promise . all ( promises ) ;
34
35
35
- return Promise . all ( promises ) . then ( ( [ allResources , availableLibraries ] ) => {
36
- if ( ! availableLibraries || availableLibraries . length === 0 ) {
37
- // Try to build all themes
38
- return allResources ;
39
- }
36
+ let resources ;
37
+ if ( ! availableLibraries || availableLibraries . length === 0 ) {
38
+ // Try to build all themes
39
+ resources = allResources ;
40
+ } else {
40
41
/* Don't try to build themes for libraries that are not available
41
42
(maybe replace this with something more aware of which dependencies are optional and therefore
42
43
legitimately missing and which not (fault case))
@@ -54,18 +55,22 @@ module.exports = function({workspace, dependencies, options}) {
54
55
return false ;
55
56
} ;
56
57
57
- return allResources . filter ( isAvailable ) ;
58
- } ) . then ( ( resources ) => {
59
- return themeBuilder ( {
60
- resources,
61
- fs : fsInterface ( combo ) ,
62
- options : {
63
- compress
64
- }
65
- } ) ;
66
- } ) . then ( ( processedResources ) => {
67
- return Promise . all ( processedResources . map ( ( resource ) => {
68
- return workspace . write ( resource ) ;
69
- } ) ) ;
58
+ resources = await allResources . filter ( isAvailable ) ;
59
+ }
60
+ const processedResources = await themeBuilder ( {
61
+ resources,
62
+ fs : fsInterface ( combo )
70
63
} ) ;
64
+
65
+ const compress = options . compress === undefined ? true : options . compress ;
66
+ if ( compress ) {
67
+ const cssResources = processedResources . filter ( ( resource ) => {
68
+ return resource . getPath ( ) . endsWith ( ".css" ) ;
69
+ } ) ;
70
+ await cssOptimizer ( { resources : cssResources ,
71
+ fs : fsInterface ( combo ) } ) ;
72
+ }
73
+ return Promise . all ( processedResources . map ( ( resource ) => {
74
+ return workspace . write ( resource ) ;
75
+ } ) ) ;
71
76
} ;
0 commit comments