使用Gulp

时间:2015-10-12 17:45:39

标签: javascript gulp handlebars.js jst

我刚刚从 grunt 转移到 gulp ,我想将我的把手模板(扩展名为.handlebars)预先编译成单独的.js文件。< / p>

发件人:

  • WWW /模板/ login.handlebars
  • WWW /模板/ home.handlebars

  • WWW /模板/ login.js
  • WWW /模板/ home.js

我试图使用gulp但无济于事。很多npm包都要求你将数据传递给编译器,但我的web应用程序中的数据主要是从ajax请求中收集的,然后传递给把手模板。

我的gulpfile.js:

// cache vars
var gulp = require('gulp'),
    rename = require('gulp-rename'),
    handlebars = require('gulp-compile-handlebars');

// start task
gulp.task('default', function(){

    return gulp.src( 'www/templates/*.handlebars' )
        .pipe( handlebars() )
        .pipe( rename('*.js') )
        .pipe( gulp.dest( 'www/templates' ) );
    });

});

我从Grunt搬到Gulp的主要原因是因为grunt似乎不支持更新的车把版本(link here)。

有很多例子如何编译把手模板但不是我想要的方式(我的方式可行吗?)

另外,如果可能的话,我不想将我的把手js文件包装到命名空间中。

当我运行我的gulp任务时,没有任何.js文件生成任何想法?

1 个答案:

答案 0 :(得分:1)

我有一个不太干净的解决方案适合我。我使用pump + gulp,因为如果在处理管道时出现问题,请清理源代码。

gulpfile.js 中的

const pump = require( 'pump' )
const handlebars = require( 'gulp-handlebars' )

gulp.task( 'default', ( done ) => {

    const templates = [
        'login',
        'home'
    ] // <-- You may want to get the list of files programmatically ;)

    let pipe = []

    templates.forEach( ( template ) => {
        pipe.push( gulp.src( 'www/templates/' + template + '.handlebars' ) )
        pipe.push( handlebars() )
        pipe.push( gulp.dest( 'www/templates/' ) )
    } )

    pump( pipe, done )

} )