2015-04-06 62 views
0

我只想加载一个使用jQuery代码的JS文件,但我很困惑如何做到最好。我担心的事情是做一些草率像下面来解决下$(document).ready(function(){});如何将多个jQuery文件连接成一个使用Gulp?

gulp.task('compile-js', function() { 
    gulp.src(['./js/initialization.js', './stuff.js'./js/end.js']) 
     .pipe(concat('script.js')) 
     .pipe(gulp.dest('./public/javascripts/')); 
}); 

其中initialization.jsend.js都为document.ready功能的包装加载所有脚本的问题(我知道笑,因此询问)

有没有更好的方法呢?

回答

0

写一饮而尽文件,让我们把它叫做 'jQuery的noconflict.js'

var through = require('through2'); 
var gutil = require('gulp-util'); 
var fs = require('fs'); 

module.exports = function(){ 
    var stream = through.obj(function(file, enc, cb) { 
    if (file.isStream()) { 
     this.emit('error', new PluginError(PLUGIN_NAME, 'Streams are not supported!')); 
     return cb(); 
    } 

    if (file.isBuffer()) { 
     var contents = file.contents.toString(); 
     file.contents = Buffer.concat([new Buffer('jQuery(document).ready(function(){'), file.contents, new Buffer('})')]); 
    } 

    cb(null, file); 
    }, function(){ 

    }) 

    return stream; 
}; 

您可能需要 '故宫安装through2'

现在在你的gulpfile.js

var gulp = require('gulp'); 
var concat = require('gulp-concat'); 
var jquery = require('./jquery-noconflict'); 

gulp.task('compile-js', function(){ 
    gulp.src('./stuff.js') 
     .pipe(concat('script.js')) 
     .pipe(jquery()) 
     .pipe(gulp.dest('./public/javascripts/')) 
}) 
相关问题