From 1d462f2987457012191cf87d9f8783ba96463f2d Mon Sep 17 00:00:00 2001 From: Christopher Allen Date: Thu, 22 Sep 2022 16:47:26 +0200 Subject: [PATCH] feat(build): Make package tasks invoke their prerequisites Have the package task invoke the cleanBuildDir (as well as cleanPackageDir) and build tasks. Remove the checkBuildDir task as it is now redundant since a fresh build is done every time. --- gulpfile.js | 10 ++++----- scripts/gulpfiles/package_tasks.js | 36 +++++++----------------------- scripts/gulpfiles/release_tasks.js | 29 ++++++++++-------------- 3 files changed, 25 insertions(+), 50 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 39f161494..86d080a5f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -26,11 +26,15 @@ module.exports = { // Main sequence targets. They already invoke prerequisites. cleanBuildDir: buildTasks.cleanBuildDir, + cleanReleaseDir: packageTasks.cleanReleaseDir, messages: buildTasks.messages, tsc: buildTasks.tsc, deps: buildTasks.deps, minify: buildTasks.minify, build: buildTasks.build, + package: packageTasks.package, + publish: releaseTasks.publish, + publishBeta: releaseTasks.publishBeta, // Manually-invokable targets that invoke prerequisites. prepare: buildTasks.prepare, @@ -44,20 +48,16 @@ module.exports = { // Legacy target, to be deleted. checkin: buildTasks.checkin, + recompile: releaseTasks.recompile, // TBD. deployDemos: appengineTasks.deployDemos, deployDemosBeta: appengineTasks.deployDemosBeta, - cleanReleaseDir: packageTasks.cleanReleaseDir, gitSyncDevelop: gitTasks.syncDevelop, gitSyncMaster: gitTasks.syncMaster, gitCreateRC: gitTasks.createRC, gitUpdateGithubPages: gitTasks.updateGithubPages, - package: packageTasks.package, checkLicenses: licenseTasks.checkLicenses, - recompile: releaseTasks.recompile, prepareDemos: appengineTasks.prepareDemos, - publish: releaseTasks.publish, - publishBeta: releaseTasks.publishBeta, sortRequires: cleanupTasks.sortRequires, }; diff --git a/scripts/gulpfiles/package_tasks.js b/scripts/gulpfiles/package_tasks.js index 312754d6c..0c890e281 100644 --- a/scripts/gulpfiles/package_tasks.js +++ b/scripts/gulpfiles/package_tasks.js @@ -19,6 +19,7 @@ gulp.replace = require('gulp-replace'); var path = require('path'); var fs = require('fs'); var rimraf = require('rimraf'); +var build = require('./build_tasks'); var {getPackageJson} = require('./helper_tasks'); var {BUILD_DIR, RELEASE_DIR, TYPINGS_BUILD_DIR} = require('./config'); @@ -53,32 +54,6 @@ function packageCommonJS(namespace, dependencies) { }); }; -// Sanity check that the BUILD_DIR directory exists, and that certain -// files are in it. -function checkBuildDir(done) { - // Check that directory exists. - if (!fs.existsSync(BUILD_DIR)) { - done(new Error(`The ${BUILD_DIR} directory does not exist. ` + - 'Has packageTasks.build been run?')); - return; - } - // Check files built by buildTasks.build exist in BUILD_DIR. - for (const fileName of [ - 'blockly_compressed.js', // buildTasks.buildCompressed - 'blocks_compressed.js', // buildTasks.buildBlocks - 'javascript_compressed.js', // buildTasks.buildGenerators - 'msg/js/en.js', // buildTaks.buildLangfiles - ]) { - if (!fs.existsSync(`${BUILD_DIR}/${fileName}`)) { - done(new Error( - `Your ${BUILD_DIR} directory does not contain ${fileName}. ` + - 'Has packageTasks.build been run? Try "npm run build".')); - return; - } - } - done(); -} - /** * This task copies the compressed files and their source maps into * the release directory. @@ -399,10 +374,14 @@ function cleanReleaseDir(done) { /** * This task prepares the files to be included in the NPM by copying * them into the release directory. + * + * Prerequisite: build. */ const package = gulp.series( - checkBuildDir, - cleanReleaseDir, + gulp.parallel( + build.cleanBuildDir, + cleanReleaseDir), + build.build, gulp.parallel( packageIndex, packageCompressed, @@ -426,6 +405,7 @@ const package = gulp.series( ); module.exports = { + // Main sequence targets. Each should invoke any immediate prerequisite(s). cleanReleaseDir: cleanReleaseDir, package: package, }; diff --git a/scripts/gulpfiles/release_tasks.js b/scripts/gulpfiles/release_tasks.js index 7be0bd9fd..83c33e80b 100644 --- a/scripts/gulpfiles/release_tasks.js +++ b/scripts/gulpfiles/release_tasks.js @@ -147,27 +147,18 @@ function updateBetaVersion(done) { done(); } -// Build Blockly and prepare to check in the resulting built files. -const rebuildAll = gulp.series( - buildTasks.cleanBuildDir, - buildTasks.build, - buildTasks.checkin, - ); - -// Package and publish to npm. +// Rebuild, package and publish to npm. const publish = gulp.series( - rebuildAll, - packageTasks.package, + packageTasks.package, // Does clean + build. checkBranch, checkReleaseDir, loginAndPublish ); -// Publish a beta version of Blockly. +// Rebuild, package and publish a beta version of Blockly. const publishBeta = gulp.series( updateBetaVersion, - rebuildAll, - packageTasks.package, + packageTasks.package, // Does clean + build. checkBranch, checkReleaseDir, loginAndPublishBeta @@ -179,12 +170,16 @@ const recompileDevelop = gulp.series( gitTasks.syncDevelop(), gitTasks.createRebuildBranch, updateVersionPrompt, - rebuildAll, + packageTasks.package, // Does clean + build. + buildTasks.checkin, gitTasks.pushRebuildBranch ); module.exports = { + // Main sequence targets. Each should invoke any immediate prerequisite(s). + publishBeta, + publish, + + // Legacy target, to be deleted. recompile: recompileDevelop, - publishBeta: publishBeta, - publish: publish -} +};