[英]gulp-inject not working with event-stream
gulp-inject不适用于事件流。
var gulp = require('gulp');
var mainBowerFiles = require('main-bower-files');
var inject = require('gulp-inject');
var es = require('event-stream');
var config = {
sassDir: './resources/assets/sass',
jsPath: './resources/app',
fontDir: './resources/fonts',
imageDir: './resources/images',
bowerDir: './bower_components'
};
gulp.task('index', function () {
return gulp.src('./resources/index.html')
.pipe(inject(gulp.src(mainBowerFiles('**/*.js'), {read: false}), {name: 'bower'}))
.pipe(inject(es.merge(gulp.src(config.jsPath + '/**/*.js', {read: false}))))
.pipe(gulp.dest('./public'));
});
结果是这样的。
<!-- inject:js -->
<script src="/resources/app/core.js"></script>
<script src="/resources/app/first-folder/01.js"></script>
<script src="/resources/app/second-folder/02.js"></script>
<!-- endinject -->
不幸的是mainBowerFiles('**/*.js')
不与inject(es.merge(gulp.src(config.jsPath + '/**/*.js', {read: false})))
合并inject(es.merge(gulp.src(config.jsPath + '/**/*.js', {read: false})))
mainBowerFiles('**/*.js')
inject(es.merge(gulp.src(config.jsPath + '/**/*.js', {read: false})))
您的问题是,您要使用两个不同的源(主Bower文件和resources/app
的文件inject()
两次调用inject()
,但是您希望将这两个源都注入到同一部分中。
您需要对已合并的源调用一次 inject()
:
gulp.task('index', function () {
return gulp.src('./resources/index.html')
.pipe(inject(es.merge(
gulp.src(mainBowerFiles('**/*.js'), {read: false}),
gulp.src(config.jsPath + '/**/*.js', {read: false})
)))
.pipe(gulp.dest('./public'));
});
编辑:如果您想保持文件的顺序,可以使用streamqueue
而不是es.merge()
:
var streamqueue = require('streamqueue');
gulp.task('index', function () {
return gulp.src('./resources/index.html')
.pipe(inject(streamqueue({ objectMode: true },
gulp.src(mainBowerFiles('**/*.js'), {read: false}),
gulp.src(config.jsPath + '/**/*.js', {read: false})
)))
.pipe(gulp.dest('./public'));
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.