如何在gulp中的函数内连接多个js文件

时间:2015-05-18 20:41:11

标签: javascript jquery gulp gulp-concat

我需要使用Gulp将其相应函数中的所有特定文件连接起来,并使用以下文件夹结构:

modules
  - header
    - document.ready.js
    - functions.js
    - window.resize.js
  - main
    - document.ready.js
    - functions.js
    - window.resize.js
  - footer
    - document.ready.js
    - functions.js
    - window.resize.js

最终文件应如下所示:

//All functions.js files concated.

$(document).ready(function(){
    //All document.ready.js files concated.
});

$(window).resize(function(){
    //All window.resize.js files concated.
});

有没有人知道如何用Gulp做到这一点?

到目前为止,我有这个:

gulp.task('modules', function() {
    gulp.src('js/modules/**/document.ready.js')
        .pipe(concat('document.ready.js'));

    var source = gulp.src('generator/assets/js/document.ready.js', {read: false});
    var target = gulp.src('js/modules/modules.js');

    target.pipe(inject(source), {starttag: '<!-- inject:head:js -->'})
        .pipe(gulp.dest('generator/assets/js'));
});

var目标文件包含以下内容:

$(document).ready(function(){
    <!-- inject:head:js -->
    <!-- endinject -->
});

当我运行gulp时,只需复制文件并且不进行注入。知道可能出现什么问题吗?

1 个答案:

答案 0 :(得分:1)

我用这个解决了我的问题:

var gfi = require("gulp-file-insert");

gulp.task('modules', function() {
    gulp.src('js/modules/**/document.ready.js')
        .pipe(concat('document.ready.js'))
        .pipe(gulp.dest('generator/assets/js'));

    gulp.src('js/modules/modules.js')
        .pipe(gfi({
            "/* file 1 */": "generator/assets/js/document.ready.js"
        }))
        .pipe(gulp.dest('generator/assets/js'));
});

要替换文件内容,您可以使用gulp-file-insert