Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按顺序吞下Concat文件,然后再吞下任何其他js文件_Javascript_Node.js_Gulp - Fatal编程技术网

Javascript 按顺序吞下Concat文件,然后再吞下任何其他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

我将如何按照一定的顺序添加一些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/'));
});
因为我使用的是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