gpt4 book ai didi

javascript - 我需要将参数从另一个任务传递给 gulp 任务,或者用 runSequence 调用的函数替换任务

转载 作者:行者123 更新时间:2023-11-29 21:30:20 26 4
gpt4 key购买 nike

我有 gulp 文件,用于为多种考试、Ex1、Ex2 等创建 Html 和 Js

这是我用来为 Ex1 创建这些的任务。它硬编码了对 makeEx1Html 任务和其他三个任务的调用,然后是一个函数调用,我可以在其中传递参数:

gulp.task('make_prod_ex1', function () {
runSequence(
'makeEx1Html',
'makeTemplate',
'rename_bundle_css',
'rename_bundle_js',
function () {
make_prod_index('ex1');
});
});

这是为 Ex1 硬编码的任务:

gulp.task('makeEx1Html', function () {
return gulp.src(config.srcEx1Html, { base: process.cwd() })
.pipe(print(function (file) {
return "Found file " + file;
}))
.pipe(rename({ basename: 'base' }))
.pipe(gulp.dest('./'));

});

这是我可以传递参数的函数:

function make_prod_index(name) {
return function () {
gulp.src('index.html')
.pipe(htmlreplace({
'css': 'content/bundles/css.min.css',
'js': 'content/bundles/js.min.js'
}))
.pipe(eol())
.pipe(lec({ eolc: 'CRLF' }))
.pipe(replace('content/bundles/css.min.css', 'content/bundles/css-' + md5File('content/bundles/css.min.css') + '.min.css.gz'))
.pipe(replace('content/bundles/js.min.js', 'content/bundles/js-' + md5File('content/bundles/js.min.js') + '.min.js.gz'))
.pipe(rename('index-' + name + '.html'))
.pipe(gulp.dest('./'));
}
}

我想避免执行诸如“makeEx1Html”和“makeEx2Html”等特定任务,但我不确定如何执行此操作。

请注意,所有这些任务都需要按顺序运行,这就是我使用 runSequence 的原因。

如果有任何建议,我将不胜感激。理想情况下,我希望使 Html 成为我可以将参数传递给的函数的任务,但我不确定如何将其满足我的要求。

最佳答案

Ideally I would like the task that makes the Html to be a function that I can pass a parameter to

你可以做到这一点,除了你不只是将你的参数传递给函数,还有一个回调 cb 将在你的函数完成时调用:

function makeExHtml(files, cb) {
return gulp.src(files, { base: process.cwd() })
.pipe(print(function (file) {
return "Found file " + file;
}))
.pipe(rename({ basename: 'base' }))
.pipe(gulp.dest('./'))
.on('end', cb);
}

然后在您的 gulp 任务中,您可以使用上面的 makeExHtml() 函数并传递一个回调,该回调将执行您的 runSequence() 的其余部分:

gulp.task('make_prod_ex1', function () {
makeExHtml(config.srcEx1Html, function() {
runSequence(
'makeTemplate',
'rename_bundle_css',
'rename_bundle_js',
function () {
make_prod_index('ex1');
});
});
});

关于javascript - 我需要将参数从另一个任务传递给 gulp 任务,或者用 runSequence 调用的函数替换任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36644578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com