我有gulp文件用于为多种考试创建Html和Js,Ex1,Ex2等
这是我用来为Ex1创建这些任务的任务。它已经硬编码了对makeEx1Html任务的调用,其他三个任务,然后是函数调用,我可以传递一个参数:
public static class InputBinder
{
public static readonly DependencyProperty InputBindingsProperty = DependencyProperty.RegisterAttached
(
"InputBindings",
typeof(InputBindingCollection),
typeof(InputBinder),
new FrameworkPropertyMetadata(new InputBindingCollection(), (sender, e) =>
{
var element = (UIElement)sender;
if (element != null)
{
element.InputBindings.Clear();
element.InputBindings.AddRange((InputBindingCollection)e.NewValue);
}
})
);
public static InputBindingCollection GetInputBindings(UIElement element)
{
return (InputBindingCollection)element.GetValue(InputBindingsProperty);
}
public static void SetInputBindings(UIElement element, InputBindingCollection inputBindings)
{
element.SetValue(InputBindingsProperty, inputBindings);
}
}
以下是Ex1硬编码的任务:
gulp.task('make_prod_ex1', function () {
runSequence(
'makeEx1Html',
'makeTemplate',
'rename_bundle_css',
'rename_bundle_js',
function () {
make_prod_index('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('./'));
});
我希望避免像#make; makeEx1Html'这样的特定任务。和' makeEx2Html'等,但我不知道该怎么做。
请注意,所有这些任务都需要按顺序运行,这就是我使用runSequence的原因。
我将不胜感激任何建议。理想情况下,我想要使Html成为我可以传递参数的函数的任务,但我不知道如何将其纳入我的要求。
答案 0 :(得分:2)
理想情况下,我希望使Html成为可以将参数传递给
的函数的任务
除此之外,您不仅可以将参数传递给函数,还可以在函数完成时调用回调函数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');
});
});
});