Recently we upgraded to Gulp 4. However, the following things still need to be addressed in some way:

- If a task series is executed with an anonymous function inside it, we'll see `Starting '<anonymous>'` in the output, which isn't that great. We need to either suppress it or use named functions.
- If a task is private, it should be hidden in some way. For example, `gh-pages-prepare` is only used in the public `web` target and should not be used on its own, however currently it shows in the default `gulp` output since it's a regular task. Perhaps we should mark them with an underscore?
"src/scripting_api/*.js",
      "src/shared/scripting_utils.js",
      "external/quickjs/*.js",
    ],
    { ignoreInitial: false },
    gulp.series("dev-sandbox")
  );
});
gulp.task(
  "server",
  gulp.parallel("watch-dev-sandbox", function () {
    console.log();
    console.log("### Starting local server");
    const WebServer = require("./test/webserver.js").WebServer;
    const server = new WebServer();
    server.port = 8888;
    server.start();
  })
);
gulp.task("clean", function (done) {
  console.log();
  console.log("### Cleaning up project builds");
  rimraf(BUILD_DIR, done);
});
gulp.task("makefile", function () {
  let makefileContent = "help:\n\tgulp\n\n";
  const targetsNames = [];
  for (const i in target) {
    makefileContent += i + ":\n\tgulp " + i + "\n\n";
    targetsNames.push(i);