Gulp任务覆盖先前任务的输出

时间:2019-11-20 13:54:11

标签: node.js gulp dust.js

我有一个gulpfile定义了两个任务:“英语”和“意大利语”。

他们实际上返回了几个子任务,一个用于网站页面,一个用于每个团队成员HTML代码段,一个用于客户端本地化字符串。

我在团队成员摘要任务方面遇到问题。 “意大利语”任务的团队成员子任务会无条件覆盖“英语”子任务的输出。

“英语”和“意大利语”任务如果分别运行,都可以按预期工作,但是我希望它们都在“默认”任务中运行。

使用相同的gulp实例时似乎共享了一些东西,但这对我来说真的没有意义。

我在使用Node v10.16.0,gulp 3.9.1的macOS Mojave。

有人遇到过类似的问题吗?

这是重现该错误的最小模板:

{%esc:s}
    <p>{localisedDescription}</p>
{/esc}

还有gulpfile:

const gulp = require('gulp');
const rename = require('gulp-rename');
const dusthtml = require('gulp-dust-html');

const content = {
    teamMembers: [
        {
            detailPageName: 'A.html',
            description: {
                en: `Description A.`,
                it: `Descrizione A.`
            }
        },
        {
            detailPageName: 'B.html',
            description: {
                en: `Description B.`,
                it: `Descrizione B.`
            }
        }
    ]
};

gulp.task('english', function () {
    const teamDetailPagesTask = content.teamMembers.map(member => {
        member.localisedDescription = member.description['en'];

        return gulp.src('templates/bug-team-member-detail.dust')
            .pipe(dusthtml({
                basePath: 'templates',
                data: member
            }))
            .pipe(rename(member.detailPageName))
            .pipe(gulp.dest('bug/en'));
    });

    return [...teamDetailPagesTask, /* other tasks here */];
});

gulp.task('italian', function () {
    const teamDetailPagesTask = content.teamMembers.map(member => {
        member.localisedDescription = member.description['it'];

        return gulp.src('templates/bug-team-member-detail.dust')
            .pipe(dusthtml({
                basePath: 'templates',
                data: member
            }))
            .pipe(rename(member.detailPageName))
            .pipe(gulp.dest('bug/it'));
    });

    return [...teamDetailPagesTask, /* other tasks here */];
});

gulp.task('default', ['english', 'italian']);

0 个答案:

没有答案