使用 gulp 和 main-bower-files 对输出进行排序(gulp 顺序不起作用)

Ordering the output using gulp and main-bower-files (gulp-order doesn't work)

本文关键字:gulp 排序 顺序 不起作用 main-bower-files 输出 使用      更新时间:2023-09-26

这里的Java工程师,是Javascript世界的新手,所以如果我没有提供足够/正确的信息,请道歉!

我有一个 gulp 构建脚本并使用 bower 来管理我的 JS 前端应用程序的依赖项。我正在努力让(bower控制的)供应商javascript库以正确的顺序连接,以便jQuery和angular排在第一位。

如果它们不是第一个,那么当我加载我的应用程序时,我会得到角度是未定义的,或者 jQuery 是未定义的,因为它们相应的 javascript 代码被埋在级联库中更下方的某个地方。

我尝试使用 gulp-order 对生成的 main-bower-files 调用的输出进行排序,但它似乎没有效果。

我的吞咽任务如下:

gulp.task('lib', function () {
    var files =
      gulp.src(mainBowerFiles({
        paths: {
          bowerrc: './.bowerrc',
          bowerJson: './bower.json'
        }, env: 'lib'}))
      .pipe(order(["vendor/bower/jquery/**/*.js", "vendor/bower/angular/**/*.js", "vendor/bower/**/*.js" ]))
  return processJsFiles('lib', files);
});

processJsFiles 做了丑陋的工作,看起来很像:

        .pipe(uglify(name + '.js', {
            outSourceMap: true,
            screwIe8: true,
            compress: {
              hoist_funs: false,
              if_return: false
            }
        }))
        .pipe(gulp.dest(build_dir))
        .pipe(gzip())
        .pipe(gulp.dest(build_dir));

我应该这样做的任何线索或更好的方法?

在对文档进行了大量探索之后,我发现您需要指定订单插件需要从哪里开始的基础,例如:

gulp.task('lib', function () {
    var files =
      gulp.src(mainBowerFiles({
        paths: {
          bowerrc: './.bowerrc',
          bowerJson: './bower.json'
        }, env: 'lib'}))
      .pipe(order([
          "vendor/bower/jquery/**/*.js", 
          "vendor/bower/angular/**/*.js", 
          "vendor/bower/**/*.js" 
          ], { base: './' })
      );
  return processJsFiles('lib', files);
});