Gulp -order node модуль с объединенными потоками

Я использую модуль gulp -order вместе с модулем потоков событий и gulp -concat, чтобы объединить файлы javascript в один файл dest. Плагин gulp -order отлично подойдет для меня в других проектах, где я хотел бы объединить файлы из потока в определенном порядке. По какой-то причине в этом проекте он работает некорректно, а файлы в каталоге public/angular/config разбросаны среди файлов, которые я указываю для конкатенации последнего в каталоге public/js. Я думаю, что это может иметь какое-то отношение к определению многократных источников, т.е. каталогов angular и js. Я попытался слить потоки с модулем событий-потоков без везения, тогда как при первом запуске я указал несколько источников, передав массив функции gulp.src

gulp.src(['./public/angular/**/*.js', './public/js/*.js'])

Ниже приведен код, который я использую сейчас. Трубопроводы и конкатенация работают нормально, но порядок не соответствует спецификации:

var gulp         = require('gulp');
var concat       = require('gulp-concat');
var notify       = require('gulp-notify');
var handleErrors = require('../util/handleErrors');
var jshint       = require('gulp-jshint');
var ngmin        = require('gulp-ngmin');
var order        = require('gulp-order');
var es           = require('event-stream');

function getStream(streamPath) {
  return gulp.src(streamPath);
};

gulp.task('scripts', function() {
    return es.merge(getStream('./public/angular/**/*.js'),getStream('./public/js/*.js'))
        .pipe(order([
          './public/angular/config/*.js',
          './public/angular/services/**/*.js',
          './public/angular/modules/**/*.js',
          './public/angular/primitives/**/*.js',
          './public/js/**/*.js'
        ]))
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./public/build/js'))
        .on('error', handleErrors);
});

Ответ 1

У меня была эта же проблема, и я использовал gulp-print для просмотра имен файлов в моем потоке, но они были верны. Я узнал, что мне нужно добавить опцию base в gulp-order, тогда все получилось хорошо.

gulp.src(['myFiles/*', 'myOtherFiles/*'])
   .pipe(order([
      'myOtherFiles/lib1.js',
      'myFiles/lib2.js'
   ], {base: '.'});

Полезная статья: http://martinwolf.org/2014/08/12/force-a-concatenation-order-with-gulp-js/

UPDATE: новая ссылка на статью в блоге: https://martinwolf.org/blog/2014/08/force-a-concatenation-order-with-gulp-js