0

gulp-inject は event-stream では機能しません。

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})))

ここに画像の説明を入力

4

1 に答える 1

1

問題は、 2 つの異なるソース (メインの bower ファイルと のファイル) をinject() 2 回呼び出しているがresources/app、両方のソースを同じセクションに挿入したいことです。

あなたがする必要があるのは、すでにマージされたソースで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'));
});
于 2016-10-06T13:03:47.453 に答える