typescript 我如何在新的gulp任务API中使用旧样式的任务名称?

z31licg0  于 2023-02-13  发布在  TypeScript
关注(0)|答案(4)|浏览(124)

根据https://gulpjs.com/docs/en/api/task,创建任务的新方法不是gulp.task("xyz" ...),而是使用exports.build = build;。这种方法的问题是,我不能再使用feature:buildfeature:watch等旧任务名称,因为我只能导出有效的JS标识符。
新方法有没有办法做到这一点?

nimxete2

nimxete21#

这是一个非常基本的问题,例如,使用语法exports[taskName] = taskFunction;

exports['feature:build'] = function () {
   // ...
};

你可能想在这里阅读更多:https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Basics#Bracket_notation

e3bfsja2

e3bfsja22#

偶然发现了答案。
每个TaskFunction都有一个属性displayName,这个属性不仅改变了任务列表中显示任务的名称,也改变了任务运行时的名称,而且还改变了需要传递给gulp以运行它的任务名称。
所以它可能是这样的:

export const myTask :TaskFunction = () => ...;
myTask.displayName = "run:task";
sd2nnvve

sd2nnvve3#

好消息是:从ECMAScript 2022开始,可以使用字符串文本为导出设置别名:

function featureBuild() { ... }

export {
    featureBuild as 'feature:build'
}

参见第16.2.3节,其中定义了导出语法,您将看到ModuleExportName可能是字符串文字。
坏消息是:我找不到任何已经实现这一点的软件。

fcwjkofz

fcwjkofz4#

我发现的最简单的方法就是将函数添加到exports中,然后通过终端执行它。
gulpfile.js

exports.your_function = ....

在终端中:

> gulp your_function

希望有帮助。

相关问题