在合并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",
但他们都没有工作。
答案 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