带有合并流的统一顺序节点模块



我正在使用gulp-order模块以及事件流模块和gulp-concat将javascript文件连接到单个dest文件中。gulp-order插件在我想以不同的顺序从流中连接文件的其他项目中工作得很好。由于某些原因,在这个项目中,它不能正常工作,公共/angular/config目录中的文件分散在我指定的公共/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);
});

我有同样的问题,我使用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/

更新:新的链接到博客文章:https://martinwolf.org/blog/2014/08/force-a-concatenation-order-with-gulp-js

最新更新