-
-
Notifications
You must be signed in to change notification settings - Fork 278
/
assemblefile.js
94 lines (78 loc) · 2.02 KB
/
assemblefile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
'use strict';
var path = require('path');
var merge = require('mixin-deep');
var extname = require('gulp-extname');
var permalinks = require('assemble-permalinks');
var getDest = require('../../docs/plugins/get-dest');
var viewEvents = require('../../docs/plugins/view-events');
var assemble = require('../..');
var app = assemble();
/**
* Plugins
*/
app.use(viewEvents('permalink'));
app.use(permalinks());
app.use(getDest());
app.onPermalink(/./, function(file, next) {
file.data = merge({}, app.cache.data, file.data);
next();
});
app.data({
site: {
base: 'site'
}
});
/**
* Create views collection for our site pages and blog posts.
* Posts will be written in markdown.
*/
app.create('pages');
app.create('posts', {
pager: true,
renameKey: function(key, view) {
return view ? view.basename : path.basename(key);
}
});
app.posts.use(permalinks(':site.base/blog/:filename.html'));
app.pages.use(permalinks(':site.base/:filename.html'));
/**
* Register a handlebars helper for processing markdown.
* This could also be done with a gulp plugin, or a
* middleware, but helpers are really easy and provide
* the most control.
*/
app.helper('markdown', require('helper-markdown'));
app.helpers('../../docs/helpers/*.js');
app.helper('log', function(val) {
console.log(val);
});
/**
* Tasks for loading and rendering our templates
*/
app.task('load', function(cb) {
app.partials('src/templates/includes/*.hbs');
app.layouts('src/templates/layouts/*.hbs');
app.pages('src/templates/pages/*.hbs');
app.posts('src/content/*.md');
cb();
});
/**
* Default task
*/
app.task('default', ['load'], function() {
return app.toStream('pages')
.pipe(app.toStream('posts'))
.on('error', console.log)
.pipe(app.renderFile('md'))
.on('error', console.log)
.pipe(extname())
.pipe(app.dest(function(file) {
file.path = file.data.permalink;
file.base = path.dirname(file.path);
return file.base;
}));
});
/**
* Expose your instance of assemble to the CLI
*/
module.exports = app;