cwj-cli
Version:
70 lines (63 loc) • 1.73 kB
JavaScript
const path = require('path')
const fs = require('fs')
const ejs = require('ejs')
const inquirer = require('inquirer')
// 解析传入的模板ejs文件,并生成字符串返回
const complie = (templateName, { name, wrapperName }) => {
const templatePosition = `../template/${templateName}`
const templatePath = path.resolve(__dirname, templatePosition)
return new Promise((resolve, reject) => {
ejs.renderFile(
templatePath,
{ data: { name, wrapperName } },
{},
(err, result) => {
if (err) {
reject(err)
return
}
resolve(result)
}
)
})
}
// node生成文件
const writeToFile = (path, content) => fs.promises.writeFile(path, content)
// 递归创建文件目录
// path.dirname始终返回某个文件名的上一层目录地址
// fs.mkdirSync只能一层一层创建目录
const createDir = (dirPath) => {
if (fs.existsSync(dirPath)) {
return true
}
// 如果存在上层文件夹,则创建下一级文件夹
if (createDir(path.dirname(dirPath))) {
fs.mkdirSync(dirPath)
return true
}
}
// 判断并提示创建目标文件夹
const judgeNeedCreateDir = async (dest) => {
const targetDir = path.resolve(dest)
if (fs.existsSync(targetDir)) {
return true
}
const answer = await inquirer.prompt([
{
type: 'confirm',
name: 'createDir',
message: `当前未存在该目标地址目录---${targetDir}---,是否自动创建`,
},
])
if (!answer.createDir) {
return false
}
createDir(targetDir)
return true
}
module.exports = {
complie,
writeToFile,
createDir,
judgeNeedCreateDir,
}