选择其他文件夹

Select folder other then

本文关键字:文件夹 其他 选择      更新时间:2023-09-26

在Gulp任务中合并JS文件时,我有以下功能:

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",

但它们都不起作用。

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

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));
});

有关gulp.src的详细信息,请参阅本SO。注意报价:

如果模式以a开头!字符,则它被否定。

编辑

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

此外,您可以将最后两个排除合并为一个这样的排除:

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