2017-02-12 9 views
1

私は、次のハンドルバーの構造を有する:一息-ハンドルを使用してハンドルテンプレートを縮小化する方法

├── gulpfile.js 
└── source/ 
    └── templates/ 
     ├── view1/ 
     │ └── template11.handlebars 
     └── view2/ 
      └── template21.handlebars 

そして、これを取得:

└── target/ 
    └── js/ 
     ├── view1.min.js  
     └── view2.min.js 

の質問は、実際の縮小さコンパイル済みのテンプレートを作成する方法です。今、私は開いているプリコンパイル済みのjsを取得しています。

マイgruntfile.jsです:

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

gulp.task('build-templates', (done) => { 

    const views = [ 
     'view1', 
     'view2' 
    ] 

    let pipe = [] 

    views.forEach((view) => { 
     pipe.push(gulp.src('source/templates/' + view + '/**/*')) 
     pipe.push(handlebars()) 
     pipe.push(rename(view +'.templates.min.js')) 

     // pipe.push(uglify()) <-- this gives me the error: 
     // [13:40:38] GulpUglifyError: unable to minify JavaScript 
     // Caused by: SyntaxError: Unexpected token: punc (:) (line: 1, col: 11, pos: 11)" 

     pipe.push(gulp.dest('target/js')) 
    }) 

    pump(pipe, done) 

}) 

私はただのNode.jsは、パイプの処理中にプロセスがエラーを生じた場合、それはソースを閉じるために持っていることを知っているようにpumpを使用しています。

ありがとうございます! :)

答えて

1

コンパイルされたコードをパラメータとしてHandlebars.template()にラップする必要があることはわかりませんでした。明らかにgulp-handlebars文書で指摘されています。 :(結果は有効なjsコードではなく、uglifyはそれを処理できませんでした。解決策は次のとおりです:解決策:

const pump = require('pump') 
const concat = require('gulp-concat') 
const wrap = require('gulp-wrap') 
const declare = require('gulp-declare') 
const handlebars = require('gulp-handlebars') 
const uglify = require('gulp-uglify') 

gulp.task('build-templates', (done) => { 

    const views = [ 
     'view1', 
     'view2' 
    ] 

    let pipe = [] 

    views.forEach((view) => { 
     pipe.push(gulp.src('source/templates/' + view + '/**/*')) 
     pipe.push(handlebars()) 
     pipe.push(wrap('Handlebars.template(<%= contents %>)')) // <-- this is the key 
     pipe.push(declare({ 
      namespace: 'MyApp.templates', // <-- get easy access to templates 
      noRedeclare: true, // <-- Avoid duplicate declarations 
     })) 
     pipe.push(concat(view + '.templates.js')) // <-- use concat instead of rename to concatenate several templates 
     pipe.push(uglify()) // <-- done 
     pipe.push(gulp.dest('target/js')) 
    }) 

    pump(pipe, done) 

}) 
関連する問題