控制源文件的顺序

时间:2015-03-12 12:11:06

标签: gulp bower

我正在使用Gulp和main-bower-files来捆绑我的bower依赖项。

我需要确保在AngularJS之前包含jQuery,但由于Angular bower包实际上并不依赖于jQuery,因此它包含在之后。

有没有办法将jQuery推送到源列表的顶部或覆盖Angular的依赖,所以它确实需要jQuery?

我尝试使用gulp-order插件来执行此操作,但它会弄乱其余文件的原始顺序:

gulp.task('bower', function () {

  var sources = gulp.src(mainBowerFiles(['**/*.js', '!**/*.min.js'])); // don't include min files

  return sources
    // force jquery to be first
    .pipe(plugins.order([
      'jquery.js',
      '*'
    ]))
    .pipe(plugins.sourcemaps.init())
      .pipe(plugins.concat('libs.min.js'))
      .pipe(plugins.uglify())
    .pipe(plugins.sourcemaps.write('./'))
    .pipe(gulp.dest(config.output))
    .pipe(plugins.notify({ message: 'Bower task complete' }));
});

2 个答案:

答案 0 :(得分:36)

您可以覆盖项目bower.json中的角度依赖项:

https://github.com/ck86/main-bower-files#overrides-options

{
    ...

    "overrides": {
        "angular": {
            "dependencies": {
                "jquery": "~1.8"
            }
        }
    }
}

答案 1 :(得分:3)

我没有使用过main-bower-files,但我能想到的一个技巧就是直接包含jquery文件,不要将其加载到主要的bower文件数组中,例如。

var glob = ['/path/to/jquery.js'].concat(mainBowerFiles(['**/*.js', '!/path/to/jquery.js']));
var sources = gulp.src(glob);