-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
61 lines (46 loc) · 1.37 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
'use strict';
const HtmlWebpackPlugin = require('html-webpack-plugin');
const fs = require('fs');
const path = require('path');
class HtmlWebpackPluginCombiner {
constructor(srcRoute) {
this.srcRoute = srcRoute;
this.htmlList = [];
this.createHtmlList()
}
createHtmlList() {
const list = this.getDirectoryAllListSync(this.srcRoute);
for (let src of list) {
this.htmlList.push(
new HtmlWebpackPlugin({
filename: src.filename,
template: src.template,
inject: false
})
);
}
}
getDirectoryAllListSync(folderPath) {
let result = [];
const readTopDirSync = folderPath => {
let items = fs.readdirSync(folderPath);
items = items.map(itemName => {
return path.join(folderPath, itemName);
});
items.forEach(itemPath => {
if (path.extname(itemPath) === '.pug') {
const dir = itemPath.replace(this.srcRoute, '').replace(path.basename(itemPath), '');
const name = path.basename(itemPath, path.extname(itemPath));
result.push({
filename: `${dir}${name}.html`,
template: './' + itemPath
});
}
if (fs.statSync(itemPath).isDirectory()) readTopDirSync(itemPath);
});
};
readTopDirSync(folderPath);
return result;
}
}
module.exports = HtmlWebpackPluginCombiner;