UNPKG

cwj-cli

Version:

70 lines (63 loc) 1.73 kB
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, }