选择其他文件夹

时间:2015-12-14 12:38:31

标签: javascript gulp

在合并JS文件的Gulp任务上,我有以下工作:

var root = "/app/scripts/"

gulp.task("build:scripts", function () {
  return gulp.src(
    [
      root + "jquery.js",
      root + "angular.js",
      root + "app.js",
      root + "app.config.js",
      root + "*/*.service.js",
      root + "*/*.controller.js"
    ]) 
    .pipe(concat("app.js"))
    .pipe(gulp.dest(paths.scripts.dist))
    .pipe(rename("app.min.js"))
    .pipe(uglify())
    .pipe(gulp.dest(paths.scripts.dist));
});

但我需要首先选择共享文件夹中的文件,然后选择其他文件:

var root = "/app/scripts/"

gulp.task("build:scripts", function () {
  return gulp.src(
    [
      root + "jquery.js",
      root + "angular.js",
      root + "app.js",
      root + "app.config.js",
      root + "shared/*.service.js",
      root + "shared/*.controller.js"
      root + "!shared/*.service.js",
      root + "!shared/*.controller.js"
    ]) 
    .pipe(concat("app.js"))
    .pipe(gulp.dest(paths.scripts.dist))
    .pipe(rename("app.min.js"))
    .pipe(uglify())
    .pipe(gulp.dest(paths.scripts.dist));
});

但这不是选择不在共享文件夹中的文件。

为什么!共享不起作用?这不应该起作用吗?

更新
我也试过

"!" + root + "shared/*.service.js",

root + "[^shared]*/*.service.js",

但他们都没有工作。

1 个答案:

答案 0 :(得分:0)

尝试移动'!'到路径的开头:

gulp.task("build:scripts", function () {
  return gulp.src(
    [
      root + "jquery.js",
      root + "angular.js",
      root + "app.js",
      root + "app.config.js",
      root + "shared/*.service.js",
      root + "shared/*.controller.js"
      root + "shared/!(*.service).js",
      root + "shared/!(*.controller).js"
    ]) 
    .pipe(concat("app.js"))
    .pipe(gulp.dest(paths.scripts.dist))
    .pipe(rename("app.min.js"))
    .pipe(uglify())
    .pipe(gulp.dest(paths.scripts.dist));
});

SO for details on gulp.src。注意引用:

  

如果模式以a开头!性格,然后它被否定。

修改

在我有时间测试之后,我已经改为上面的代码了。 您可以在括号中使用否定选项。因此root + !(*.service).js将排除以.js结尾的所有.service个文件。

您还可以将最后两个排除组合成一个如此:

root + "shared/!(*.service|*.controller).js