【问题标题】:How to assign a name to an anonymous gulp (v4) task如何为匿名 gulp (v4) 任务分配名称
【发布时间】:2021-08-03 10:03:06
【问题描述】:

我现在是第一次使用 gulp,并按照gulp 的建议导出了我的 gulp 任务。

它正在运行,结果符合预期。但是在我的控制台上,这些任务被列为。

如何为导出的 gulp 任务指定名称?

我一直在尝试采用不同的方法,例如 functionName.displayName = "Custom Name";在导出模块之前,但没有任何效果。

示例 gulp 文件。

const gulp = require('gulp');
const createHtml = require('./scripts/createHtml');
...

module.export = {
    default: gulp.series(createHtml())
}

创建Html 模块

const gulp = require('gulp');
...

const createHtml = function () {
    return function () {
        return gulp
            .src('./src/pages/**/*.+(html)')
            ... 
            .pipe(gulp.dest('./build/')))
    };
}
createHtml.displayName = "Custom Name";

module.exports = createHtml;

一饮而尽

[11:38:50] Using gulpfile ~/Documents/.../gulpfile.js
[11:38:50] Starting 'default'...
[11:38:50] Starting '<anonymous>'...
[11:38:50] Finished '<anonymous>' after 10 ms
[11:38:50] Starting '<anonymous>'...
[11:38:50] Starting '<anonymous>'...
[11:38:50] Finished '<anonymous>' after 24 ms
[11:38:50] Finished '<anonymous>' after 42 ms
...

我正在使用以下版本:

  • gulp v4.0.2
  • 节点 v15.2.0
  • macOS 11.5.1

【问题讨论】:

  • function () { 给这些函数起个名字怎么样? function myFunctionName () {。目前他们都是匿名的
  • @evolutionxbox 谢谢。不幸的是,这也不起作用。
  • @ingoBe 我想我有答案,请尝试一下。我正在使用 gulp v4,它在控制台中显示任务名称。所以试试吧。一分钟后发布答案
  • @evolutionxbox 我一开始就误解了你的回答。返回一个命名函数确实有效!非常感谢!
  • @ingo 别担心。这是一个建议而不是答案。如果他们愿意,我会让 Gulam 回答 --- 也请不要用答案编辑问题(以防你觉得有必要)

标签: javascript gulp gulp-task


【解决方案1】:

无需从createHtml 函数返回函数。您正在返回匿名函数,并且该匿名函数正在 gulp.series() 调用中执行,这就是任务名称是匿名的原因。

您需要将命名函数传递给gulp.series

试试这个 -

const gulp = require('gulp');
...

const createHtml = function () {
     return gulp.src('./src/pages/**/*.+(html)')
     ... 
    .pipe(gulp.dest('./build/')))
}

module.exports = createHtml;

然后在你的 gulp 文件中

const gulp = require('gulp');
const createHtml = require('./scripts/createHtml');
...

module.export = {
    default: gulp.series(createHtml);// pass the function reference here
}

【讨论】:

  • 谢谢!如果我在 gulp.src(...).pipe(...) 之前添加return,它可以工作,我什至可以省略 createHtml.displayName 行。
  • 是的,你不需要createHtml.displayName = "Custom Name"。更新答案
  • 我认为return inside'const createHtml = function () {} 是必要的吗?否则无法完成任务。至少在我的情况下。
猜你喜欢
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
相关资源
最近更新 更多