1+ const { promisify} = require ( "util" ) ;
2+ const rimraf = promisify ( require ( "rimraf" ) ) ;
13const log = require ( "@ui5/logger" ) . getGroupLogger ( "builder:builder" ) ;
24const resourceFactory = require ( "@ui5/fs" ) . resourceFactory ;
35const MemAdapter = require ( "@ui5/fs" ) . adapters . Memory ;
@@ -203,6 +205,7 @@ module.exports = {
203205 * @param {Object } parameters Parameters
204206 * @param {Object } parameters.tree Dependency tree
205207 * @param {string } parameters.destPath Target path
208+ * @param {boolean } [parameters.cleanDest=false] Decides whether project should clean the target path before build
206209 * @param {boolean } [parameters.buildDependencies=false] Decides whether project dependencies are built as well
207210 * @param {boolean } [parameters.dev=false] Decides whether a development build should be activated (skips non-essential and time-intensive tasks)
208211 * @param {boolean } [parameters.selfContained=false] Flag to activate self contained build
@@ -213,7 +216,7 @@ module.exports = {
213216 * @returns {Promise } Promise resolving to <code>undefined</code> once build has finished
214217 */
215218 async build ( {
216- tree, destPath,
219+ tree, destPath, cleanDest = false ,
217220 buildDependencies = false , dev = false , selfContained = false , jsdoc = false ,
218221 includedTasks = [ ] , excludedTasks = [ ] , devExcludeProject = [ ]
219222 } ) {
@@ -342,6 +345,9 @@ module.exports = {
342345 }
343346
344347 try {
348+ if ( cleanDest ) {
349+ await rimraf ( destPath ) ;
350+ }
345351 await buildProject ( tree ) ;
346352 log . info ( `Build succeeded in ${ getElapsedTime ( startTime ) } ` ) ;
347353 } catch ( err ) {
0 commit comments