-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
116 lines (111 loc) · 3.01 KB
/
index.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// Build script for website.
var Metalsmith = require('metalsmith'),
assets = require('metalsmith-assets'),
collections = require('metalsmith-collections'),
drafts = require('metalsmith-drafts'),
markdown = require('metalsmith-markdown'),
metadata = require('metalsmith-metadata'),
nib = require('nib'),
permalinks = require('metalsmith-permalinks'),
serve = require('metalsmith-serve'),
stylus = require('metalsmith-stylus'),
templates = require('metalsmith-layouts'),
updated = require('metalsmith-updated'),
watch = require('metalsmith-watch');
// Adds files in dir to the pipeline as if they were in the source folder
// Dir is a path relative to the Metalsmith root.
var join = function(dir) {
return function(files, metalsmith, done) {
var path = metalsmith.path() + '/' + dir;
metalsmith.read(path, function(err, new_files) {
if (err) {
done(err);
}
for (fname in new_files) {
if (files.hasOwnProperty(fname)) {
done(new Error('Duplicate file: ' + fname));
}
files[fname] = new_files[fname];
}
done();
});
};
};
var defaultLayout = function(config) {
return function(files, metalsmith, done) {
for (var fname in files) {
var file = files[fname];
if (file.layout) continue;
if (!file.collection) continue;
for (var c in config) {
if (file.collection.indexOf(config[c].collection) > -1) {
file.layout = config[c].layout;
break;
}
}
}
done();
};
};
var print = function(files, metalsmith, done) {
for (x in files) {
if (x.indexOf('home') > -1) {
console.log(x);
}
}
done();
};
Metalsmith(__dirname)
.destination('./build')
.use(metadata({
config: '_metadata.yaml'
}))
.use(join('templates/source'))
.use(assets({
source: './vendor',
destination: './vendor'
}))
.use(collections({
posts: {
pattern: "posts/*/*.md",
sortBy: 'date',
reverse: true,
refer: false
},
pages: {
pattern: "*.md"
}
}))
.use(defaultLayout([{
collection: "posts",
layout: "post.jade"
}, {
collection: "pages",
layout: "page.jade"
}]))
.use(markdown())
.use(permalinks({
relative: false,
linksets: [{
match: {
collection: 'posts'
},
pattern: 'posts/:title'
}]
}))
.use(updated())
.use(templates({
engine: "jade",
directory: "templates/layout",
partials: "templates/layout"
}))
.use(stylus({
compress: true,
use: [nib()]
}))
.use(serve({
port: 8080
}))
.build(function(err) {
if (err) console.log(err);
});