Javascript 使用Gulp以正确的顺序连接js文件

Javascript 使用Gulp以正确的顺序连接js文件,javascript,gulp,gulp-concat,Javascript,Gulp,Gulp Concat,我试图用gulp连接一堆js文件,但顺序是特定的。我希望一个名为“custom.js”的文件是最后一个文件(不过可以是任何其他文件名) 这是我的吞咽任务: gulp.task('scripts', function() { return gulp.src(['src/scripts/**/!(custom)*.js','src/scripts/custom.js']) .pipe(jshint('.jshintrc')) .pipe(jshint.reporter('defa

我试图用gulp连接一堆js文件,但顺序是特定的。我希望一个名为“custom.js”的文件是最后一个文件(不过可以是任何其他文件名)

这是我的吞咽任务:

gulp.task('scripts', function() {
  return gulp.src(['src/scripts/**/!(custom)*.js','src/scripts/custom.js'])
    .pipe(jshint('.jshintrc'))
    .pipe(jshint.reporter('default'))
    //.pipe(gulp.src('src/scripts/**/*.js')) not needed(?)
    .pipe(order([
        '!(custom)*.js', // all files that end in .js EXCEPT custom*.js
        'custom.js'
    ]))
    .pipe(concat('main.js'))
    .pipe(gulp.dest('static/js'))
    .pipe(rename({suffix: '.min'}))
    .pipe(uglify())
    .pipe(gulp.dest('static/js'))
    .pipe(notify({ message: 'Scripts task complete' }));
});

但是,这只是按字母顺序连接文件。除了将custom.js文件重命名为类似于zzz custom.js的文件之外,我能做些什么来解决这个问题呢?

您需要一些类似于

gulp.task('scripts', function() {
    return gulp.src(['src/scripts/**/*.js','!src/scripts/custom.js', 'src/scripts/custom.js'])
        .pipe(concat('main.js'))
        .pipe(uglify())
        .pipe(rename({suffix: '.min'}))
        .pipe(gulp.dest('static/js'));
});
  • 大口
    • Globs src/scripts中的所有js文件
    • 不包括src/scripts/custom.js
    • 加载src/scripts/custom.js
  • 将流压缩到main.js中
  • 弄脏小溪
  • 添加“.min”后缀
  • 保存到static/js
  • 关键部分是首先从glob中排除custom.js,然后添加它

    **编辑** 好吧,我想你可以把台阶拆下来。虽然不是最优雅的,但应该能做到:

    var sequence = require(‘run-sequnce’);
    var rimraf = require(‘rimraf’);
    
    // This gets called and runs each subtask in turn
    gulp.task('scripts', function(done) {
        sequence('scripts:temp', 'scripts:main', 'scripts:ugly', 'scripts:clean', done);
    });
    
    // Concat all other js files but without custom.js into temp file - 'main_temp.js'
    gulp.task('scripts:temp', function() {
        return gulp.src(['src/scripts/**/*.js','!src/scripts/custom.js'])
        .pipe(jshint('.jshintrc'))
        .pipe(jshint.reporter('default'))
        .pipe(concat('main_temp.js'))
        .pipe(gulp.dest('static/js/temp'));
    });
    
    // Concat temp file with custom.js - 'main.js'
    gulp.task('scripts:main', function() {
        return gulp.src(['static/js/temp/main_temp.js','src/scripts/custom.js'])
        .pipe(concat('main.js'))
        .pipe(gulp.dest('static/js'));
    });
    
    // Uglify and rename - 'main.min.js'
    gulp.task('scripts:ugly', function() {
        return gulp.src('static/js/main.js')
        .pipe(uglify())
        .pipe(rename({suffix: '.min'}))
        .pipe(gulp.dest('static/js'));
    });
    
    // Delete temp file and folder
    gulp.task('scripts:clean', function(done) {
        rimraf('static/js/temp', done);
    });
    

    如果这样做的话,你也许可以把它们一点一点地组合起来,你想要一个“更干净”的文件

    谢谢!但是这似乎根本没有添加custom.js…我的gulpfile和目录结构的屏幕截图,如果有帮助的话。