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?
gulp.dest(CHROME_BUILD_CONTENT_DIR + "web")
        ),
        gulp
          .src(COMMON_WEB_FILES, { base: "web/" })
          .pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + "web")),
        gulp
          .src(
            ["web/locale/*/viewer.properties", "web/locale/locale.properties"],
            { base: "web/" }
          )
          .pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + "web")),
        gulp
          .src(["external/bcmaps/*.bcmap", "external/bcmaps/LICENSE"], {
            base: "external/bcmaps",
          })
          .pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + "web/cmaps")),
        preprocessHTML("web/viewer.html", defines).pipe(
          gulp.dest(CHROME_BUILD_CONTENT_DIR + "web")
        ),
        preprocessCSS("web/viewer.css", "chrome", defines, true)
          .pipe(
            postcss([autoprefixer({ overrideBrowserslist: ["chrome >= 68"] })])
          )
          .pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + "web")),
        gulp.src("LICENSE").pipe(gulp.dest(CHROME_BUILD_DIR)),
        gulp
          .src("extensions/chromium/manifest.json")
          .pipe(replace(/\bPDFJSSCRIPT_VERSION\b/g, version))
          .pipe(gulp.dest(CHROME_BUILD_DIR)),
        gulp