-
Notifications
You must be signed in to change notification settings - Fork 202
/
utils.js
81 lines (76 loc) · 1.98 KB
/
utils.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
/**
* 工具方法
*/
const fs = require('fs');
const path = require('path');
const ejs = require('ejs');
/**
* 暂停几秒
*/
async function sleep(time) {
return new Promise((resolve) => {
setTimeout(resolve, time * 1000);
});
};
/**
* 创建单文件夹
* 如果传入的参数是相对路径,在当前目录创建
* 如果是绝对路径,就直接创建
*/
function createDir (dir){
return new Promise((resolve) => {
if(!dir) throw '请传入一个文件夹名称';
if(!path.isAbsolute(dir)) {
dir = path.resolve(__dirname, dir);
};
fs.stat(dir, (err, stat) => {
if (err){ // 不存在进行创建
fs.mkdirSync(dir);
}else{
console.log('该文件夹已经存在',dir);
};
resolve();
});
});
};
/**
* 向指定的文件夹写入文件
* @param {string} dir 需要写入的文件夹名称, 相对于项目目录的路径
*/
function writeToFile (dir, content){
fs.writeFileSync(path.resolve(__dirname, dir, './articleInfoList.json'), content);
};
/**
* 传进来的是unix 时间戳 单位 为 s
* 返回对应的年月日
* @param {Number} unixTime
* @returns YYYY-MM-dd
*/
function formatDate (unixTime) {
let date = new Date(unixTime * 1000);
return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
};
// ejs 文章模版
let articleEjsTempate = fs.readFileSync('./template/article.ejs', 'utf8');
// console.log(articleEjsTempate);
/**
* 渲染 文章 ejs 模版 并返回 html
* @param {Object} 渲染 ejs 需要的数据
* @param {options} 渲染配置项
* @returns {String} html 页面字符串
*/
function renderEjsArticle2Html(data, options) {
try {
let html = ejs.render(articleEjsTempate, data, options);
return html;
} catch(err){
throw err
};
};
module.exports = {
sleep,
createDir,
writeToFile,
formatDate,
renderEjsArticle2Html
};