mirror of
https://github.com/google/blockly.git
synced 2026-01-15 04:47:10 +01:00
feat(build): Make build tasks invoke their prerequisites
* Divide gulp targets into three kinds: main sequence, manually invokable, and script-only. The first two categories automatically invoke their prerequisites. * Give (most of) the affected gulp targets shorter and more memorable names that could become their npm script names in future.
This commit is contained in:
40
gulpfile.js
40
gulpfile.js
@@ -21,29 +21,39 @@ const releaseTasks = require('./scripts/gulpfiles/release_tasks');
|
||||
const cleanupTasks = require('./scripts/gulpfiles/cleanup_tasks');
|
||||
|
||||
module.exports = {
|
||||
// Default target if gulp invoked without specifying.
|
||||
default: buildTasks.build,
|
||||
|
||||
// Main sequence targets. They already invoke prerequisites.
|
||||
cleanBuildDir: buildTasks.cleanBuildDir,
|
||||
messages: buildTasks.messages,
|
||||
tsc: buildTasks.tsc,
|
||||
deps: buildTasks.deps,
|
||||
minify: buildTasks.minify,
|
||||
build: buildTasks.build,
|
||||
|
||||
// Manually-invokable targets that invoke prerequisites.
|
||||
prepare: buildTasks.prepare,
|
||||
format: buildTasks.format,
|
||||
generate: buildTasks.generate,
|
||||
clean: gulp.parallel(buildTasks.cleanBuildDir, packageTasks.cleanReleaseDir),
|
||||
buildAdvancedCompilationTest: buildTasks.buildAdvancedCompilationTest,
|
||||
|
||||
// Targets intended only for invocation by scripts; may omit prerequisites.
|
||||
onlyBuildAdvancedCompilationTest: buildTasks.onlyBuildAdvancedCompilationTest,
|
||||
|
||||
// Legacy target, to be deleted.
|
||||
checkin: buildTasks.checkin,
|
||||
|
||||
// TBD.
|
||||
deployDemos: appengineTasks.deployDemos,
|
||||
deployDemosBeta: appengineTasks.deployDemosBeta,
|
||||
default: buildTasks.build,
|
||||
generateLangfiles: buildTasks.generateLangfiles,
|
||||
build: buildTasks.build,
|
||||
buildDeps: buildTasks.deps,
|
||||
buildLangfiles: buildTasks.langfiles,
|
||||
buildCompiled: buildTasks.compiled,
|
||||
buildAdvancedCompilationTest: buildTasks.advancedCompilationTest,
|
||||
buildJavaScript: buildTasks.javaScript,
|
||||
buildJavaScriptAndDeps: buildTasks.javaScriptAndDeps,
|
||||
checkin: gulp.parallel(buildTasks.checkinBuilt),
|
||||
checkinBuilt: buildTasks.checkinBuilt,
|
||||
clangFormat: buildTasks.format,
|
||||
clean: gulp.parallel(buildTasks.cleanBuildDir, packageTasks.cleanReleaseDir),
|
||||
cleanBuildDir: buildTasks.cleanBuildDir,
|
||||
cleanReleaseDir: packageTasks.cleanReleaseDir,
|
||||
gitSyncDevelop: gitTasks.syncDevelop,
|
||||
gitSyncMaster: gitTasks.syncMaster,
|
||||
gitCreateRC: gitTasks.createRC,
|
||||
gitUpdateGithubPages: gitTasks.updateGithubPages,
|
||||
package: packageTasks.package,
|
||||
prepare: buildTasks.prepare,
|
||||
checkLicenses: licenseTasks.checkLicenses,
|
||||
recompile: releaseTasks.recompile,
|
||||
prepareDemos: appengineTasks.prepareDemos,
|
||||
|
||||
@@ -32,15 +32,15 @@
|
||||
"clean:build": "gulp cleanBuildDir",
|
||||
"clean:release": "gulp cleanReleaseDir",
|
||||
"checkin": "gulp checkin",
|
||||
"checkin:built": "gulp checkinBuilt",
|
||||
"deployDemos": "gulp deployDemos",
|
||||
"deployDemos:beta": "gulp deployDemosBeta",
|
||||
"format": "gulp clangFormat",
|
||||
"format": "gulp format",
|
||||
"format:sortrequires": "gulp sortRequires",
|
||||
"generate:langfiles": "gulp generateLangfiles",
|
||||
"license": "gulp checkLicenses",
|
||||
"lint": "eslint .",
|
||||
"lint:fix": "eslint . --fix",
|
||||
"only:compile:advanced": "gulp onlyBuildAdvancedCompilationTest --debug",
|
||||
"package": "gulp package",
|
||||
"prepare": "gulp prepare",
|
||||
"prepareDemos": "gulp prepareDemos",
|
||||
|
||||
@@ -300,15 +300,12 @@ function prepare(done) {
|
||||
done();
|
||||
return;
|
||||
}
|
||||
return buildJavaScriptAndDeps(done);
|
||||
return exports.deps(done);
|
||||
}
|
||||
|
||||
const buildJavaScriptAndDeps = gulp.series(buildJavaScript, buildDeps);
|
||||
|
||||
/**
|
||||
* Builds Blockly as a JS program, by running tsc on all the files in
|
||||
* the core directory. This must be run before buildDeps or
|
||||
* buildCompiled.
|
||||
* the core directory.
|
||||
*/
|
||||
function buildJavaScript(done) {
|
||||
execSync(
|
||||
@@ -323,6 +320,8 @@ function buildJavaScript(done) {
|
||||
*
|
||||
* Also updates TEST_DEPS_FILE (deps.mocha.js), used by the mocha test
|
||||
* suite.
|
||||
*
|
||||
* Prerequisite: buildJavaScript.
|
||||
*/
|
||||
function buildDeps(done) {
|
||||
const roots = [
|
||||
@@ -639,6 +638,8 @@ function compile(options) {
|
||||
* blockly_compressed.js, blocks_compressed.js, etc.
|
||||
*
|
||||
* The deps.js file must be up-to-date.
|
||||
*
|
||||
* Prerequisite: buildDeps.
|
||||
*/
|
||||
function buildCompiled() {
|
||||
// Get chunking.
|
||||
@@ -673,6 +674,8 @@ function buildCompiled() {
|
||||
/**
|
||||
* This task builds Blockly core, blocks and generators together and uses
|
||||
* closure compiler's ADVANCED_COMPILATION mode.
|
||||
*
|
||||
* Prerequisite: buildDeps.
|
||||
*/
|
||||
function buildAdvancedCompilationTest() {
|
||||
const srcs = [
|
||||
@@ -701,26 +704,11 @@ function buildAdvancedCompilationTest() {
|
||||
.pipe(gulp.dest('./tests/compile/'));
|
||||
}
|
||||
|
||||
/**
|
||||
* This task builds all of Blockly:
|
||||
* blockly_compressed.js
|
||||
* blocks_compressed.js
|
||||
* javascript_compressed.js
|
||||
* python_compressed.js
|
||||
* php_compressed.js
|
||||
* lua_compressed.js
|
||||
* dart_compressed.js
|
||||
* msg/json/*.js
|
||||
* test/deps*.js
|
||||
*/
|
||||
const build = gulp.parallel(
|
||||
gulp.series(buildJavaScript, buildDeps, buildCompiled),
|
||||
buildLangfiles,
|
||||
);
|
||||
|
||||
/**
|
||||
* This task copies built files from BUILD_DIR back to the repository
|
||||
* so they can be committed to git.
|
||||
*
|
||||
* Prerequisite: buildCompiled, buildLangfiles.
|
||||
*/
|
||||
function checkinBuilt() {
|
||||
return gulp.src([
|
||||
@@ -753,17 +741,23 @@ function format() {
|
||||
.pipe(gulp.dest('.'));
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
prepare: prepare,
|
||||
build: build,
|
||||
javaScriptAndDeps: buildJavaScriptAndDeps,
|
||||
javaScript: buildJavaScript,
|
||||
deps: buildDeps,
|
||||
generateLangfiles: generateLangfiles,
|
||||
langfiles: buildLangfiles,
|
||||
compiled: buildCompiled,
|
||||
format: format,
|
||||
checkinBuilt: checkinBuilt,
|
||||
cleanBuildDir: cleanBuildDir,
|
||||
advancedCompilationTest: buildAdvancedCompilationTest,
|
||||
}
|
||||
// Main sequence targets. Each should invoke any immediate prerequisite(s).
|
||||
exports.cleanBuildDir = cleanBuildDir;
|
||||
exports.messages = buildLangfiles;
|
||||
exports.tsc = buildJavaScript;
|
||||
exports.deps = gulp.series(exports.tsc, buildDeps);
|
||||
exports.minify = gulp.series(exports.deps, buildCompiled);
|
||||
exports.build = gulp.parallel(exports.minify, exports.messages);
|
||||
|
||||
// Manually-invokable targets, with prequisites where required.
|
||||
exports.prepare = prepare;
|
||||
exports.format = format;
|
||||
exports.generate = generateLangfiles;
|
||||
exports.buildAdvancedCompilationTest =
|
||||
gulp.series(exports.deps, buildAdvancedCompilationTest);
|
||||
|
||||
// Targets intended only for invocation by scripts; may omit prerequisites.
|
||||
exports.onlyBuildAdvancedCompilationTest = buildAdvancedCompilationTest;
|
||||
|
||||
// Legacy target, to be deleted.
|
||||
exports.checkin = gulp.series(exports.build, checkinBuilt);
|
||||
|
||||
@@ -105,7 +105,7 @@ const updateGithubPages = gulp.series(
|
||||
},
|
||||
buildTasks.cleanBuildDir,
|
||||
buildTasks.build,
|
||||
buildTasks.checkinBuilt,
|
||||
buildTasks.checkin,
|
||||
function(done) {
|
||||
execSync('git commit -am "Rebuild"', { stdio: 'inherit' });
|
||||
execSync('git push ' + upstream_url + ' gh-pages --force', { stdio: 'inherit' });
|
||||
|
||||
@@ -151,7 +151,7 @@ function updateBetaVersion(done) {
|
||||
const rebuildAll = gulp.series(
|
||||
buildTasks.cleanBuildDir,
|
||||
buildTasks.build,
|
||||
buildTasks.checkinBuilt,
|
||||
buildTasks.checkin,
|
||||
);
|
||||
|
||||
// Package and publish to npm.
|
||||
|
||||
@@ -77,7 +77,7 @@ run_test_command "package" "npm run package"
|
||||
run_test_command "node" "./node_modules/.bin/mocha tests/node --config tests/node/.mocharc.js"
|
||||
|
||||
# Attempt advanced compilation of a Blockly app.
|
||||
run_test_command "advanced_compile" "npm run test:compile:advanced"
|
||||
run_test_command "advanced_compile" "npm run only:compile:advanced"
|
||||
|
||||
# End of tests.
|
||||
popd
|
||||
|
||||
Reference in New Issue
Block a user