Javascript 按顺序吞下Concat文件,然后再吞下任何其他js文件
我将如何按照一定的顺序添加一些js文件,然后再添加任何其他剩余的文件?我正在考虑这样做:Javascript 按顺序吞下Concat文件,然后再吞下任何其他js文件,javascript,node.js,gulp,Javascript,Node.js,Gulp,我将如何按照一定的顺序添加一些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
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/'));
});
因为我使用的是glob,所以不确定这是否会重新添加已经浓缩的文件。可能就是您要找的。我还没有测试下面的代码,但是测试结果表明它可以工作。如果它不起作用,我建议您尝试更具体地使用最后一个globstar,以便尽可能地确定目录的范围
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/'));
});
还有一个示例。gulp.src()
使用。如果您查看节点glob的
,作者会给出算法的伪代码描述(简称,完整伪代码请参见源代码):
这对您意味着:
顺序被保留。文件/lib/file3.js
、/lib/file1.js
和/lib/file2.js
将按照该顺序发出,如果您以该顺序显式地将它们传递给gulp.src()
。在这种情况下,无需使用gulporder
没有重复项。由于文件是uniqed,因此它们不会在您的吞咽流中发出两次。事实上,node glob
采取了特定的预防措施,以防止重复:
nounique
在某些情况下,大括号扩展模式可能导致同一文件在结果集中多次显示。默认情况下,此实现可防止结果集中出现重复项。设置此标志以禁用该行为
以及:
请注意,符号链接目录不会作为**的一部分进行爬网,尽管它们的内容可能与模式的后续部分相匹配。这可以防止无限循环和重复等
TLDR:是的,你的代码很有效
// 1. Get the minimatch set
// 2. For each pattern in the set, PROCESS(pattern, false)
// 3. Store matches per-set, then uniq them