UNPKG

infra-cli

Version:
35 lines (33 loc) 1.1 kB
const metalsmith = require('metalsmith') const handlebars = require('handlebars') const chalk = require('chalk') module.exports = async function replaceTemplate (metadata, targetDir) { return new Promise((resolve, reject) => { metalsmith(__dirname) .metadata(metadata) .clean(false) .source(targetDir) .destination(targetDir) .use((files, metalsmith, done) => { const meta = metalsmith.metadata() Object.keys(files) .filter((file) => { const fileRegex = /^.*\.(svg|png|jpg|ico|gif|jpeg|tsx)/g return !fileRegex.test(file) }) .forEach((fileName) => { try { const t = files[fileName].contents.toString() files[fileName].contents = Buffer.from(handlebars.compile(t)(meta), 'utf-8') } catch (error) { console.error(chalk.redBright(`${fileName} is replacement failed!\n`)) console.error(error) } }) done() }) .build((err) => { err ? reject(err) : resolve() }) }) }