dws-cli-ui
Version:
dws-cli dws系列:包括大屏、移动端、设计器项目等待
68 lines (59 loc) • 1.75 kB
JavaScript
const fs = require("fs")
const path = require("path")
const ejs = require("ejs")
const logInfo = require("./log")
const ejsCompile = (templatePath, data = {}, options = {}) => {
return new Promise((resolve, reject) => {
ejs.renderFile(templatePath, { data }, options, (err, str) => {
if (err) {
reject(err)
return
}
resolve(str)
})
})
}
const writeFile = (path, content) => {
if (fs.existsSync(path)) {
logInfo.error("当前文件已经存在")
return
}
return fs.promises.writeFile(path, content)
}
const mkdirSync = dirname => {
if (fs.existsSync(dirname)) {
return true
} else {
// 不存在,判断父亲文件夹是否存在?
if (mkdirSync(path.dirname(dirname))) {
// 存在父亲文件,就直接新建该文件
fs.mkdirSync(dirname)
return true
}
}
}
/**
* 创建EJS文件
* @param {*} name 名称
* @param {*} dest 创建的文件路径
* @param {*} template 相对于utils下面的模板路径,因为createEJS函数在utils下面
* @param {*} filename 文件名称
*/
const createEJS = async (name, dest, template, filename) => {
// 路径获取
// console.log("__dirname : " + __dirname)
// console.log("resolve : " + path.resolve("./"))
// console.log("cwd : " + process.cwd())
// 1.获取模块引擎的路径
const templatePath = path.resolve(__dirname, template)
const result = await ejsCompile(templatePath, {
name,
filename: name.toLowerCase()
})
// 2.写入文件中
// 判断文件不存在,那么就创建文件
mkdirSync(dest)
const targetPath = path.resolve(dest, filename)
writeFile(targetPath, result)
}
module.exports = { ejsCompile, writeFile, mkdirSync, createEJS }