@@ -16,14 +16,6 @@ const definedTasks = {
16
16
generateLibraryPreload : require ( "../tasks/bundlers/generateLibraryPreload" )
17
17
} ;
18
18
19
-
20
- // Set of tasks for development
21
- const devTasks = [
22
- "replaceCopyright" ,
23
- "replaceVersion" ,
24
- "buildThemes"
25
- ] ;
26
-
27
19
/**
28
20
* Calculates the elapsed build time and returns a prettified output
29
21
*
@@ -50,29 +42,31 @@ function getElapsedTime(startTime) {
50
42
* @param {Object } parameters.tree Dependency tree
51
43
* @param {string } parameters.destPath Target path
52
44
* @param {boolean } [parameters.buildDependencies=false] Decides whether project dependencies are built as well
53
- * @param {boolean } [parameters.dev =false] Decides whether a development build should be activated (skips non-essential and time-intensive tasks)
45
+ * @param {boolean } [parameters.basic =false] Decides whether a basic build should be activated (skips non-essential and time-intensive tasks)
54
46
* @param {boolean } [parameters.selfContained=false] Flag to activate self contained build
55
47
* @param {Array } [parameters.includedTasks=[]] List of tasks to be included
56
48
* @param {Array } [parameters.excludedTasks=[]] List of tasks to be excluced. If the wildcard '*' is provided, only the included tasks will be executed.
57
- * @param {Array } [parameters.devExcludeProject=[]] List of projects to be exlcuded from development build
49
+ * @param {Array } [parameters.devExcludeProject=[]] List of projects to be exlcuded from basic build
58
50
* @returns {Promise<undefined> } Promise resolving to <code>undefined</code> once build has finished
59
51
*/
60
- function build ( { tree, destPath, buildDependencies = false , dev = false , selfContained = false , includedTasks = [ ] , excludedTasks = [ ] , devExcludeProject = [ ] } ) {
52
+ function build ( { tree, destPath, buildDependencies = false , basic = false , selfContained = false , includedTasks = [ ] , excludedTasks = [ ] , devExcludeProject = [ ] } ) {
61
53
const startTime = process . hrtime ( ) ;
62
54
log . info ( `Building project ${ tree . metadata . name } ` + ( buildDependencies ? "" : " not" ) +
63
- " including dependencies..." + ( dev ? " [dev mode]" : "" ) ) ;
55
+ " including dependencies..." + ( basic ? " [basic mode]" : "" ) ) ;
64
56
log . verbose ( `Building to ${ destPath } ...` ) ;
65
57
66
- let selectedTasks = composeTaskList ( { dev, selfContained, includedTasks, excludedTasks} ) ;
67
-
68
58
const fsTarget = resourceFactory . createAdapter ( {
69
59
fsBasePath : destPath ,
70
60
virBasePath : "/"
71
61
} ) ;
72
62
63
+ // If both build options are set to true, only the basic build mode will be activated
64
+ if ( basic && selfContained ) {
65
+ log . info ( "Building project in basic mode." ) ;
66
+ selfContained = false ;
67
+ }
73
68
74
69
const projects = { } ; // Unique project index to prevent building the same project multiple times
75
-
76
70
const projectCountMarker = { } ;
77
71
function projectCount ( project , count = 0 ) {
78
72
if ( buildDependencies ) {
@@ -91,7 +85,6 @@ function build({tree, destPath, buildDependencies = false, dev = false, selfCont
91
85
92
86
function buildProject ( project ) {
93
87
let depPromise ;
94
- let projectTasks = selectedTasks ;
95
88
if ( buildDependencies ) {
96
89
// Build dependencies in sequence as it is far easier to detect issues and reduces
97
90
// side effects or other issues such as too many open files
@@ -120,17 +113,17 @@ function build({tree, destPath, buildDependencies = false, dev = false, selfCont
120
113
name : project . metadata . name
121
114
} ) ;
122
115
123
- if ( dev && devExcludeProject . indexOf ( project . metadata . name ) !== - 1 ) {
124
- projectTasks = composeTaskList ( { dev : false , selfContained, includedTasks, excludedTasks} ) ;
125
- }
126
116
return projectType . build ( {
127
117
resourceCollections : {
128
118
workspace,
129
119
dependencies : resourceCollections . dependencies
130
120
} ,
131
- tasks : projectTasks ,
132
121
project,
133
- parentLogger : log
122
+ parentLogger : log ,
123
+ buildOptions : {
124
+ basic : basic ,
125
+ selfContained : selfContained
126
+ }
134
127
} ) . then ( ( ) => {
135
128
log . verbose ( "Finished building project %s. Writing out files..." , project . metadata . name ) ;
136
129
buildLogger . completeWork ( 1 ) ;
@@ -156,80 +149,6 @@ function build({tree, destPath, buildDependencies = false, dev = false, selfCont
156
149
throw err ;
157
150
} ) ;
158
151
}
159
- /**
160
- * Creates the list of tasks to be executed by the build process
161
- *
162
- * Sets specific tasks to be disabled by default, these tasks need to be included explicitly.
163
- * Based on the selected build mode (dev|selfContained|preload), different tasks are enabled.
164
- * Tasks can be enabled or disabled. The wildcard <code>*</code> is also supported and affects all tasks.
165
- *
166
- * @private
167
- * @param {boolean } dev Sets development mode, which only runs essential tasks
168
- * @param {boolean } selfContained True if a the build should be self-contained or false for prelead build bundles
169
- * @param {Array } includedTasks Task list to be included from build
170
- * @param {Array } excludedTasks Task list to be exlcuded from build
171
- * @returns {Array } Return a task list for the builder
172
- */
173
- function composeTaskList ( { dev, selfContained, includedTasks, excludedTasks} ) {
174
- let selectedTasks = Object . keys ( definedTasks ) . reduce ( ( list , key ) => {
175
- list [ key ] = true ;
176
- return list ;
177
- } , { } ) ;
178
-
179
- // Exclude tasks: manifestBundler
180
- selectedTasks . generateManifestBundle = false ;
181
- selectedTasks . generateStandaloneAppBundle = false ;
182
-
183
- if ( selfContained ) {
184
- // No preloads, bundle only
185
- selectedTasks . generateAppPreload = false ;
186
- selectedTasks . generateStandaloneAppBundle = true ;
187
- selectedTasks . generateLibraryPreload = false ;
188
- }
189
-
190
- // Only run essential tasks in development mode, it is not desired to run time consuming tasks during development.
191
- if ( dev ) {
192
- // Overwrite all other tasks with noop promise
193
- Object . keys ( selectedTasks ) . forEach ( ( key ) => {
194
- if ( devTasks . indexOf ( key ) === - 1 ) {
195
- selectedTasks [ key ] = false ;
196
- }
197
- } ) ;
198
- }
199
-
200
- // Exclude tasks
201
- for ( let i = 0 ; i < excludedTasks . length ; i ++ ) {
202
- let taskName = excludedTasks [ i ] ;
203
- if ( taskName === "*" ) {
204
- Object . keys ( selectedTasks ) . forEach ( ( sKey ) => {
205
- selectedTasks [ sKey ] = false ;
206
- } ) ;
207
- break ;
208
- }
209
- if ( selectedTasks [ taskName ] !== false ) {
210
- selectedTasks [ taskName ] = false ;
211
- }
212
- }
213
-
214
- // Include tasks
215
- for ( let i = 0 ; i < includedTasks . length ; i ++ ) {
216
- let taskName = includedTasks [ i ] ;
217
- if ( taskName === "*" ) {
218
- Object . keys ( selectedTasks ) . forEach ( ( sKey ) => {
219
- selectedTasks [ sKey ] = true ;
220
- } ) ;
221
- break ;
222
- }
223
- if ( selectedTasks [ taskName ] === false ) {
224
- selectedTasks [ taskName ] = true ;
225
- }
226
- }
227
-
228
- // Filter only for tasks that will be executed
229
- selectedTasks = Object . keys ( selectedTasks ) . filter ( ( task ) => selectedTasks [ task ] ) ;
230
-
231
- return selectedTasks ;
232
- }
233
152
234
153
module . exports = {
235
154
build : build ,
0 commit comments