吞下Concat文件,然后任何其他js文件
我将如何去添加一些特定的顺序js文件,然后其他任何其他的? 我正在考虑这样做:
var concat = require('gulp-concat'); gulp.task('scripts', function() { return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js', './lib/**/*.js']) .pipe(concat('all.js')) .pipe(gulp.dest('./dist/')); });
不知道这是否会重新添加已经concate文件,因为我使用一个glob。
gulp.src()
使用node-glob
。 如果您查看node-glob
的源代码 ,则作者给出了该algorithm的伪代码描述(缩写,请参阅完整伪代码的源代码):
// 1. Get the minimatch set // 2. For each pattern in the set, PROCESS(pattern, false) // 3. Store matches per-set, then uniq them
这对你意味着什么:
订单被保留。 文件./lib/file3.js
和./lib/file2.js
将按照该顺序显式传递给gulp.src()
。 在这种情况下,不需要使用gulp-order
。
没有重复。 由于文件是唯一的,它们都不会在你的gulpstream中发射两次。 事实上, node-glob
需要采取特殊的预防措施来防止重复项的扩展 :
nounique
在某些情况下,花括号扩展的模式可能会导致同一个文件在结果集中出现多次。 默认情况下,这个实现可以防止结果集中的重复。 设置此标志以禁用该行为。
以及符号链接 :
请注意,符号链接的目录不会作为**的一部分进行爬网,尽pipe它们的内容可能会匹配模式的后续部分。 这可以防止无限循环和重复等。
TLDR:是的,你的代码工作。
咕噜顺序可能是你在找什么。 我还没有testing下面的代码,但文档有点build议它会工作。 如果它不起作用,我build议你试着对最后的globstar进行更具体的描述,以便在可能的情况下对目录进行testing。
var order = require("gulp-order"); gulp.task('scripts', function() { return gulp.src('./lib/**/*.js') .pipe(order([ 'file3.js', 'file1.js', 'file2.js', '**/*.js' ])) .pipe(concat('all.js')) .pipe(gulp.dest('./dist/')); });
还有一个文章和一个工作的例子。