现在我在Gulp中创建一个临时文件,它预编译我的模板.之后,我将它们uglify并将它们连接成一个javascript文件.但我宁愿没有临时文件.有没有办法在Gulp中拥有"动态"资源?我试过组合流,但无济于事.
示例代码:
gulp.task('template', function () {
gulp.src('./src/tpl/*.hbs')
.pipe(ember())
.pipe(concat('tpl.js')) // make sure to only do concat after
.pipe(gulp.dest('tmp'));
});
gulp.task('uglify', ['template'], function() {
gulp.src(['./tmp/tpl.js', './src/js/app.js'])
.pipe(uglify())
.pipe(concat('epg.js'))
.pipe(gulp.dest('dist'))
});
Run Code Online (Sandbox Code Playgroud)
Ben*_*Ben 13
任务不能直接传递到其他任务,但您可以event-stream用来合并流:
var es = require('event-stream');
function template() {
return gulp.src('./src/tpl/*.hbs')
.pipe(ember());
}
function appjs() {
return gulp.src(['./src/js/app.js']);
}
gulp.task('uglify', function() {
return es.merge(template(), appjs())
.pipe(uglify())
.pipe(concat('epg.js'))
.pipe(gulp.dest('dist'));
});
Run Code Online (Sandbox Code Playgroud)
Rus*_*oms 11
因此理论上你应该能够使用gulp版本3.8.0或更高版本.以下是包含该功能示例的更改日志.
来自更改日志:
gulp.src现在是一个可写的passthrough,这意味着你可以使用它在任何时候将文件添加到你的管道
所以你的任务可能是这样的:
gulp.task('template', function () {
return gulp.src('./src/tpl/*.hbs')
.pipe(ember())
.pipe(concat('tpl.js'))
.pipe(gulp.src('./src/js/app.js', { passthrough: true }))
.pipe(uglify())
.pipe(concat('epg.js'))
.pipe(gulp.dest('dist'))
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,似乎有一些错误,它处理某些globs时遇到问题,请参阅此处和此处提到的问题.希望他们能很快得到解决.这阻止我在我的项目中使用它,但在你的项目中你只添加一个文件,所以尝试一下,也许它会起作用.
如果它不工作,尝试使用merge-stream https://github.com/gulpjs/gulp/blob/master/docs/recipes/using-multiple-sources-in-one-task.md
编辑包括Bjorn Tipling提到的gulp.src的passthrough选项
| 归档时间: |
|
| 查看次数: |
4212 次 |
| 最近记录: |