2016-08-29 10 views
1

私は、アセンブラを使用してモジュールを静的に構築し、distフォルダに出力するプロジェクトに取り組んでいます。 jsonがなければ、これは期待どおりに動作しますが、各モジュールがマニフェストとして機能する独自の* .jsonファイルを持つように、プロセスを少し最適化する必要があります。このファイルは、ハンドラバーで注入/モジュール。jsonデータをGulp経由でアセンブル/ハンドルバー部分に構文解析

例をオンラインで見ると、それらはすべて組み立てのオプションとして解析データについて言及していますが、これを行っていてもまだ動作していません。私は何か間違っているのですか?

これは私の組み立て作業です:公式ドキュメントを後

var gulp = require('gulp'), 
    assemble = require('assemble'), 
    rename = require('gulp-rename'), 
    path = require('path'), 
    fs = require('fs'), 
    beautify = require('gulp-html-prettify'), 
    gulpif = require('gulp-if'), 
    utils = require(path.join(__dirname, '../lib/utils')), 
    config = require(utils.getConfig()), 
    app; 

/** 
* Helper function to set our module key based on the filename. 
*/ 
function fileNameAsModuleName(key, view) { 
    var v = view ? view.basename : path.basename(key); 
    v = v.split('/').pop().replace('.html', '').replace('.hbs', ''); 
    return v; 
} 

gulp.task('assemble:files', function() { 

    app = assemble({ 
     data: './src/views/partials/**/*.json' 
    }); 

    console.log(app.options); 

    /** 
    * Register all of our compiled component templates as partials 
    * so we can render them all on the page. 
    */ 
    app.create('pages', { viewType: 'layout', renameKey: fileNameAsModuleName }); 
    app.create('partials', { viewType: 'partial', renameKey: fileNameAsModuleName }); 
    app.create('styleguide', { viewType: 'partial', renameKey: fileNameAsModuleName }); 

    app.pages('./src/views/pages/*.html'); 
    app.partials('./src/views/partials/**/*.html'); 
    app.styleguide('./src/views/styleguide/index.html'); 

    app.toStream('styleguide') 
     .pipe(app.renderFile()) 
     .pipe(rename('index.html')) 
     .pipe(app.dest('./dist')); 

    app.toStream('pages') 
     .pipe(app.renderFile()) 
     .pipe(app.dest('./dist/pages')); 
}); 

gulp.task('server:assemble', ['assemble:files']); 

、私は、HTML/HBSファイルの名前でコンテキストを持つ必要があります。

foot.json:

{ 
    "script ": "/scripts/app.js" 
} 

foot.html

<script src="{{foot.script}}"></script> 

しかし、悲しいことに、私は変数スクリプトを参照、またはそれをコンテキスト/名前空間を与えるならば、それはまだ、出力HTMLで何も返しません。私は 'app.partials'に直接データを解析する必要がありますか?代わりにassembleコンストラクタにオプションとしてdataを渡すの

答えて

1

... appインスタンス上.dataメソッドを使用します。

// from 
app = assemble({ 
    data: './src/views/partials/**/*.json' 
}); 

// to 
app = assemble(); 
app.data('./src/views/partials/**/*.json'); 

あなたはドキュメント内の他のパタ​​ーンを発見した場合は、私たちができることを指摘してくださいそれを更新してください。現在、ドキュメントとウェブサイトのアップデートに取り組んでいます。現在のところ、このウェブサイトはgrunt-assembleを指しています。

+0

あなたはdoowbに感謝します。私はそれらのオプションを注入しようとして、assemble.ioで古いドキュメントを使用していましたが、上記は素晴らしいです。また、https://github.com/assemble/assembleのドキュメントにも従っています - これは正しいですか?それにもかかわらず、現在はかなりいいですし、文脈上のデータを使って深いネストされた部分的な部分を持つことも爽やかです。 – Obscuresounds