better-npm-init
Version:
A better version of npm init, with templates and more. Usage: better-npm-init <template> [--yarn] [--install] [--git] [--yes] [--help]
34 lines (29 loc) • 999 B
JavaScript
const _ = require('lodash')
const debug = require('debug')('electron-installer-common:template')
const fs = require('fs-extra')
const path = require('path')
/**
* Fill in a template with the hash of data.
*/
async function generateTemplate (templatePath, data) {
debug(`Generating template from ${templatePath}`)
const result = _.template(await fs.readFile(templatePath))(data)
debug(`Generated template from ${templatePath}\n${result}`)
return result
}
module.exports = {
/**
* Create a file from a template. Any necessary directories are automatically created.
*/
createTemplatedFile: async function createTemplatedFile (templatePath, dest, options, filePermissions) {
const fileOptions = {}
if (filePermissions) {
fileOptions.mode = filePermissions
}
await fs.ensureDir(path.dirname(dest), '0755')
const data = await generateTemplate(templatePath, options)
return fs.outputFile(dest, data, fileOptions)
},
generateTemplate
}