/ / Assemble 0.6.0: Wie kann ich mehrere Vorlagen auf meine Quelldateien anwenden? - zusammenbauen

Assembly 0.6.0: Wie kann ich mehrere Vorlagen auf meine Quelldateien anwenden? - zusammenbauen

Ich möchte Assemble meine Quelldateien übernehmen(/src/hbs/*.hbs) und erstellen Sie zwei separate Dateien (z. B. eine mit Kopfzeile, Fußzeile und Nav, und eine andere nur mit dem Code-Snippet). Ich habe zwei Vorlagen erstellt (Standard (ganze Seite) und leer (nur ein Wrapper).) Ich benutze gulp assemble und es sieht so aus:

gulp.task("assemble", function () {
assemble.layouts(paths.templates.layouts);
assemble.partial(paths.templates.partials);

gulp.src(paths.sources.handlebars)
.pipe(gulpAssemble(assemble, { layout: "default" }))
.pipe(prettify())
.pipe(rename({basename:"index", extname:".html"}))
.pipe(gulp.dest(paths.build.www));
});

gulp.task("snippet", function(){
assemble.layouts(paths.templates.layouts);
assemble.partial(paths.templates.partials);

gulp.src(paths.sources.handlebars)
.pipe(gulpAssemble(assemble, { layout: "empty" }))
.pipe(prettify())
.pipe(rename({extname:".html"}))
.pipe(gulp.dest(paths.build.www));

});

Wenn ich gulp starte, werden beide Dateien in die Standardvorlage eingepackt. Was vermisse ich?

Antworten:

0 für die Antwort № 1

Musste die Assemble-Komponenten höher im Prozess definieren und es fixieren.

assemble.layouts(paths.templates.layouts);
assemble.partial(paths.templates.partials);

gulp.task("assemble", function () {
gulp.src(paths.sources.handlebars)
.pipe(gulpAssemble(assemble, { layout: "empty" }))
.pipe(rename({extname:".html"}))
.pipe(gulp.dest(paths.build.www));
});

gulp.task("snippet", function () {
gulp.src(paths.sources.handlebars)
.pipe(gulpAssemble(assemble, { layout: "default" }))
.pipe(rename({basename:"index", extname:".html"}))
.pipe(gulp.dest(paths.build.www));
});

0 für die Antwort № 2

Der Code in Brandon Merritts Beispiel basierte auf der 0.6.0 beta API von Assemble.

So würden Sie dies jetzt in Assemble durchführen (ab v0.17.0):

var assemble = require("assemble");
var app = assemble();


// use a task for loading collections, so we can ensure views
// are loaded before `src` files, or re-loaded when watch is triggered
app.task("load", function(cb) {
app.layouts(paths.templates.layouts);
app.partial(paths.templates.partials);
cb();
});

app.task("assemble", ["load"], function() {
// with assemble or gulp, you need to return the stream
// or call the callback to signal task completion
return app.src(paths.sources.handlebars)
.pipe(app.renderFile())
.pipe(rename({extname:".html"}))
.pipe(app.dest(paths.build.www));
});

app.task("snippet", ["load"], function() {
return app.src(paths.sources.handlebars)
.pipe(app.renderFile({ layout: "default" }))
.pipe(rename({basename:"index", extname:".html"}))
.pipe(app.dest(paths.build.www));
});