v3-json-canvas-cli
Version:
这是一个帮助你快速创建vue的可视化拖拽项目的CLI
53 lines (48 loc) • 1.41 kB
JavaScript
const path = require("path");
const fs = require("fs");
const ejs = require("ejs")
const program = require('commander')
// 编译ejs模板和数据,返回字符串
const compile = (template, data) => {
const templatePath = path.resolve(__dirname, `../templates/${template}`)
return new Promise((resolve, reject) => {
ejs.renderFile(templatePath, {data}, {}, (err, res) => {
if(err) {
console.log(err);
reject(err)
return
}
resolve(res)
})
})
}
// 写入文件
const writeToFile = (path, content) => {
if(fs.existsSync(path) && !program.opts().force) {
return console.error('文件已经存在!无法再次创建。强制执行操作请运行:v3-json-canvas <command> <name> -f');
}
return fs.promises.writeFile(path, content)
}
// 创建文件夹(多层嵌套也可以创建)
const createDeepFolder = (dest) => {
return new Promise((resolve, reject) => {
try {
const arr = dest.split("/")
const resList = arr.map((item, i) => {
return path.resolve(arr.slice(0, i+1).join('/'))
})
resList.forEach(item => {
const info = fs.existsSync(item)
if(info === false) fs.mkdirSync(item)
})
resolve()
} catch (error) {
reject(error)
}
})
}
module.exports = {
compile,
writeToFile,
createDeepFolder
}