我需要为特定文件应用构建任务。为了找到它们,我使用了典型的模板。但是我不知道如何从gulp.src中传递参数(文件路径)。
期望的解决方案。
gulp.task('bundles', function() {
gulp.src('bundles/**/*.js').
pipe(gulp.start('build', file.path));
});
gulp.task('build', function (path) {
// use here
});
我需要为特定文件应用构建任务。为了找到它们,我使用了典型的模板。但是我不知道如何从gulp.src中传递参数(文件路径)。
期望的解决方案。
gulp.task('bundles', function() {
gulp.src('bundles/**/*.js').
pipe(gulp.start('build', file.path));
});
gulp.task('build', function (path) {
// use here
});
这个问题有点老旧,我不确定我完全理解你在这里想要实现什么,但我认为你正在寻找的是lazypipe
如果那不是你要找的,请澄清你的问题
示例用法:
var lazypipe = require('lazypipe'),
g = require('gulp-load-plugins')({lazy: true}),
jsTransformPipe = lazypipe()
.pipe(g.jshint) // <-- Notice the notation: g.jshint, not g.jshint()
.pipe(g.concat, 'bundle.js'), // <-- Notice how the param is passed to g.concat, as a second param to .pipe()
jsSourcePipe = lazypipe()
.pipe(gulp.src, './**/*.js');
gulp.task('bundle', function() {
jsSourcePipe()
.pipe(jsTransformPipe()) // <-- You execute the lazypipe by calling it as a function
.pipe(gulp.dest('../build/');
});
lazypipe
,您基本上可以创建一个管道以备将来使用;希望这有所帮助。gulp.task('build', function (path) {
gulp.src('bundles/**/*.js)
//Your code for this task
});
当然,它可以去除捆绑任务,但它本身并不实用。如果我有错误,请毫不犹豫地评论,我会尽力帮助您。
gulp.task('build', function (path)
永远不会起作用。Gulp 任务的唯一有效参数是回调函数,用于表示异步任务完成。如果您尝试运行上述代码,Gulp 将期望 path
是一个函数,并且除非调用该函数,否则任务将永远无法完成。在此示例中,“build”任务应该是从“bundles”管道调用的常规函数,而不是任务。var gulp = require('gulp');
var through = require('through2');
gulp.task('stack', function() {
return gulp.src('./src/*.js')
.pipe(through.obj(function(file, enc, cb) {
// file.path is the full path to the file
myBuildFunction(file.path);
cb(null, file);
}))
.pipe(gulp.dest('./build/'));
})
这非常强大。要修改文件内容,只需更改file.contents
缓冲区。要重命名或移动文件,请更改file.path
。所有操作都可以在gulp的本地管道中完成。