首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gulp自定义函数返回并行不会做任何事情

Gulp自定义函数返回并行不会做任何事情
EN

Stack Overflow用户
提问于 2020-03-03 18:40:31
回答 1查看 125关注 0票数 4

我试图在Gulp上实现一个抽象层,允许在一个专用文件上进行简单的配置。

总之,我有一个函数(builder),它需要该文件(gulpconfig.js),并调用函数,从配置文件用parallel()导出的对象返回ReadableStreams。

这里是要旨 (从我的私人来源简化)。

但是,当我执行gulp build时,它并不像它应该调用的那样调用TestHandler函数。在调试了一段时间之后,我发现所有东西(包括变量赋值等)都工作得很好,但它只是不会执行返回的parallel()实例。

我怎样才能纠正这种行为呢?

下面是来自GitHub Gist的代码片段:

gulpfile.js

代码语言:javascript
复制
/* REQUIRES */
const { parallel } = require('gulp');
const user = require('./gulpconfig');

let params = {};
let fns = [];

async function builder() {
    for (let [name, props] of Object.entries(user.config)) {
        let fnName = name;
        let fn = user[fnName];
        let src = props.src;
        let dest = props.dest;
        params[fnName] = { src, dest };
        fns.push(fn);
    }
    user.paramCp(params);
    return parallel(...fns);
}
exports.build = builder;

gulpconfig.js

代码语言:javascript
复制
/* REQUIRES */
const { src, dest, on, watch } = require('gulp');
const pipeline = require('readable-stream');
/* USER CONFIG */
exports.config = {
    testHandler: {
        src: "./input/*",
        dest: "./output/",
    },
};
/* LOCAL PARAM HANDLER. USED INTERNALLY. */
var params;
exports.paramCp = _params => {
    params = _params;
};
var tSrc;
var tDest;
function getParams() {
    let obj = params[getParams.caller.name];
    tSrc = obj.src;
    tDest = obj.dest;
}
/* HANDLERS. DEFINED BY handler KEY IN CONFIG */
exports.testHandler = function testHandler() {
    getParams(); // You can now use tSrc and tDest
    return pipeline(src(tSrc), dest(tDest));
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-08 15:49:01

这是对古普的预期。

gulp.parallelgulp.series返回函数(它们将分别并发和串行地执行它们的参数)。它们用于任务定义(在任务定义中需要函数)或直接调用。

有关更多细节和解释,请参见这个GitHub问题

解决方案

执行parallel返回的函数

代码语言:javascript
复制
    return parallel(...fns)();

附加问题:pipeline的问题

看起来您在这里尝试使用pipeline,这并不是一个坏主意,但是您的pipeline变量没有正确定义。const pipeline = require('readable-stream');制造Readable类型的pipeline。这是套餐

你可能想要这个

代码语言:javascript
复制
const { pipeline } = require('readable-stream');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60513640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档