Gulp没有以正确的顺序连接js文件

时间:2016-11-19 20:22:50

标签: javascript gulp gulp-concat gulp-order

我使用gulp连接和缩小js文件。但是文件不按它应该的顺序连接,就像这是我想要的顺序:

 var scriptFiles = [
  'assets/lib/js/angular.min.js',
  'assets/lib/js/angular-sanitize.min.js',
  'assets/lib/js/angular-route.min.js',
  'assets/lib/js/angular-ui-router.min.js',
  'assets/lib/js/angular-css.min.js',
  'assets/lib/js/angular-select.min.js',
  'assets/lib/js/duration.js',
  'assets/lib/js/ui-codemirror.min.js',
];

问题是,在连接ui-codemirror.min.js文件到达编译文件的顶部之后,由于angular.js未初始化/加载,因此打破了javascript。

为了解决这个问题,我尝试使用" gulp-order" 包并编写了这个gulp任务:

gulp.task('lib-js', function() {
  return gulp.src(scriptFiles)
    .pipe(jshint())
    .pipe(jshint.reporter('default'))
    .pipe(order(scriptFiles, { base: './' }))
    .pipe(concat('vendor.js'))
    .pipe(gulp.dest('assets/compiled/js'))
    .pipe(rename({ suffix: '.min' }))
    .pipe(uglify())
    .pipe(gulp.dest('assets/compiled/js'))
});

我传递了相同的scriptFiles数组以尝试保留顺序。但它没有用。

然后我尝试了 streamqueue 插件,并更改了任务:

gulp.task('lib-js', function() {
  return streamqueue({ objectMode: true },
      gulp.src('assets/lib/js/angular.min.js'),
      gulp.src('assets/lib/js/angular-sanitize.min.js'),
      gulp.src('assets/lib/js/angular-route.min.js?v=20161018-1'),
      gulp.src('assets/lib/js/angular-ui-router.min.js'),
      gulp.src('assets/lib/js/angular-css.min.js'),
      gulp.src('assets/lib/js/angular-select.min.js'),
      gulp.src('assets/lib/js/jquery-2.1.1.min.js'),
      gulp.src('assets/lib/js/material.min.js'),
      gulp.src('assets/lib/js/ocLazyLoad.min.js'),
      gulp.src('assets/lib/js/duration.js'),
      gulp.src('assets/lib/js/ui-codemirror.min.js')
    )
    .pipe(concat('vendor.js'))
    .pipe(gulp.dest('assets/compiled/js'))
    .pipe(rename({ suffix: '.min' }))
    .pipe(uglify())
    .pipe(gulp.dest('assets/compiled/js'))
});

这也不起作用。我无法调试为什么会发生这种情况。 "为了" " streamqueue"插件对输出没有影响。任何想法/解决方案?

0 个答案:

没有答案