You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
966 B
41 lines
966 B
|
1 year ago
|
const ejs = require('ejs')
|
||
|
|
const path = require('path')
|
||
|
|
const fs = require('fs')
|
||
|
|
|
||
|
|
const compiler = (template,data) => {
|
||
|
|
const templatePath = path.resolve(__dirname,`./${template}`)
|
||
|
|
|
||
|
|
return new Promise((resolve,reject)=>{
|
||
|
|
ejs.renderFile(templatePath,{data},(err,result)=>{
|
||
|
|
if(err){
|
||
|
|
console.log(err);
|
||
|
|
reject(err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
resolve(result)
|
||
|
|
})
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
const writeFile = (path,content) =>{
|
||
|
|
return fs.promises.writeFile(path,content)
|
||
|
|
}
|
||
|
|
|
||
|
|
const resolveName = name => {
|
||
|
|
if (/(-|_)/g.test(name)) {
|
||
|
|
let splitName = name.split(/(-|_)/).filter(i => !/(-|_)/.test(i)).map(i => i.charAt(0).toUpperCase() + i.slice(1))
|
||
|
|
return splitName.join('')
|
||
|
|
} else {
|
||
|
|
return (name.charAt(0).toUpperCase() + name.slice(1))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
const ensureDirectoryExistence = (filePath) => {
|
||
|
|
if (!fs.existsSync(filePath)) {
|
||
|
|
fs.mkdirSync(filePath);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
module.exports = {
|
||
|
|
compiler,writeFile,resolveName,ensureDirectoryExistence
|
||
|
|
}
|
||
|
|
|