有没有办法使用 Gulp 中另一个包的默认导出并在输出中保留任务名称?

Is there a way to use a default export from another package in Gulp and retain task names in the output?

背景

我在多个 Git 存储库中使用 Gulp 来构建 NPM 包。我不希望 Gulp 任务在每个存储库中重复,因此我创建了一个单独的包来存储通用 Gulp 逻辑。我还使用 @babel/preset-env 转译 gulpfile.babel.js 以便能够使用 ES2015。

代码

npm link 为简洁起见排除了命令。

// babel.config.js from both packages
module.exports = {
  presets: [
    [
      '@babel/preset-env',
      {
        targets: {
          node: 'current'
        }
      }
    ]
  ]
};

我的-gulp-任务包

// index.js
import { series } from 'gulp';

export function clean (cb) {
  console.log('cleaned');
  cb();
}

export function build (cb) {
  console.log('built');
  cb();
}

export const defaultTask = series(clean, build);
// gulpfile.babel.js
export { defaultTask as default } from '.';

我的其他库包

// babel-register.js
require('@babel/register')({
  ignore: [/node_modules\/(?!my-gulp-tasks)/]
});
// .gulp.json
{
  "flags": {
    "require": [
      "./babel-register.js"
    ]
  }
}
// gulpfile.js
export { defaultTask as default } from 'gulp-tasks';

预期

Gulp in my-gulp-tasks 记录以下内容(如预期):

Starting 'default'...
Starting 'clean'...
cleaned
Finished 'clean' after 1.98 ms
Starting 'build'...
built
Finished 'build' after 1.3 ms
Finished 'default' after 6.89 ms

但是,my-other-lib 中的 Gulp 记录了以下内容:

Starting 'default'...
cleaned
built
Finished 'default' after 9.21 ms

我认为当使用相同的 Gulp 参数时,它们应该都记录相同的系列任务名称(在本例中为 none)。我也试过在 cleanbuild 任务上设置 displayName 但它似乎没有什么区别。

问题

这是 Gulp 中的错误还是我只是缺少一些配置?我假设它与转译有关,但我一直无法弄清楚。

有趣的是,这似乎只有在使用 npm link 时才会发生。我发布了包含 gulp 任务的包,一旦我从存储库安装了该版本,问题就消失了。现在我猜这与我正在使用的 @babel/register ignore 正则表达式有关。尽管如此,我对它仅在已安装的软件包中工作感到满意,因为我主要关心的是如果任务失败在 CI 环境中进行故障排除。