-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate.js
74 lines (62 loc) · 2.4 KB
/
generate.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
var fs = require('fs'),
path = require('path'),
url = require('url'),
marked = require('marked'),
mkdirp = require('mkdirp'),
glob = require('glob'),
outputFolder = 'output',
contentFolder = 'content',
bundleName = 'index',
pathToBundle = path.join('desktop.bundles', bundleName),
model = require(path.resolve('.', contentFolder, 'model')),
BEMTREE = require(path.resolve('.', pathToBundle, bundleName + '.bemtree')).BEMTREE,
BEMHTML = require(path.resolve('.', pathToBundle, bundleName + '.bemhtml')).BEMHTML;
mkdirp.sync(outputFolder);
fs.writeFileSync(path.join(outputFolder, 'CNAME'), 'greenzbi.ru');
['min.js', 'min.css'].forEach(function(ext) {
fs.createReadStream(path.join(pathToBundle, bundleName + '.' + ext))
.pipe(fs.createWriteStream(path.join(outputFolder, bundleName + '.' + ext)));
});
model.forEach(function(page) {
var html,
pageFolder = path.join(outputFolder, page.url),
pageFilename= path.join(pageFolder, 'index.html');
mkdirp.sync(pageFolder);
if (page.source.indexOf('.md') > -1) {
var md = fs.readFileSync(path.join(contentFolder, page.source), 'utf8');
html = marked(md);
} else {
var files = glob.sync(path.join(contentFolder, page.source)),
previews = files.filter(function(file) {
return file.indexOf('-150x150') > -1;
});
mkdirp.sync(path.join(outputFolder, 'photos'));
files.forEach(function(file) {
fs.createReadStream(file).pipe(fs.createWriteStream(path.join(outputFolder, 'photos', path.basename(file))));
});
html = BEMHTML.apply({
block: 'gallery',
content: previews.map(function(preview) {
return {
block: 'link',
mods: { preview: true },
url: path.basename(preview.replace('-150x150', '')),
content: {
block: 'image',
url: path.basename(preview)
}
};
})
});
}
fs.writeFileSync(pageFilename, BEMHTML.apply(BEMTREE.apply({
block: 'root',
data: {
url: page.url,
relPathToRoot: page.url ? '../' : '',
pages: model,
content: html
}
})));
});
console.log('Site was generated at', path.resolve(outputFolder));