node.js - 具有合并流的 gulp-order Node 模块

标签 node.js angularjs concat gulp node-modules

我正在使用 gulp-order 模块以及 event-streams 模块和 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);
});

最佳答案

我遇到了同样的问题,我使用 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

关于node.js - 具有合并流的 gulp-order Node 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23501495/

相关文章:

javascript - ng-click Angular Directive(指令)

jquery - Socket.io - 无法从客户端向服务器端发送消息

javascript - 如何使用 JavaScript 为滚动的 3D 渲染设置动画?

javascript - 如何读取分配给 AngularJS 指令的值

angularjs - 如何居中对齐ng-Table header ?

mysql - 不能对 '\' 使用 concat

javascript - 关于在 AWS NodeJS 上使用 TypeScript。 (获取 TS 而不是 JS 的堆栈跟踪)

javascript - 如何使用 Lodash 将对象替换或附加到另一个对象

自动计算字符串中连续字母的JavaScript函数

MySQL CONCAT '*' 符号向数据库 toast