UNPKG

@namelessmedia/tisc_nuxt

Version:
79 lines (66 loc) 2.11 kB
const fs = require('fs') const { EOL: endOfLine } = require('os') const render = require('json-templater/string') const colors = require('colors'); const VAR_TEMPLATE = ` /* Automatically generated by 'tisc-nuxt' */ {{var_include}} ` const MAIN_TEMPLATE = ` :root { {{main_include}}` const LIGHT_TEMPLATE = ` {{light_include}}` const DARK_TEMPLATE = ` &.dark-theme { {{dark_include}} }` const END_TEMPLATE = ` }` module.exports = (variables, output) => { const varProperties = Object.entries(variables.vars) .map((values) => ` ${values[0]}: ${values[1]};`) .join(endOfLine) const mainProperties = Object.entries(variables.main) .map((values) => ` ${values[0]}: ${values[1]};`) .join(endOfLine) const darkProperties = Object.entries(variables.dark) .map((values) => ` ${values[0]}: ${values[1]};`) .join(endOfLine) const lightProperties = Object.entries(variables.light) .map((values) => ` ${values[0]}: ${values[1]};`) .join(endOfLine) const varTemplate = render(VAR_TEMPLATE, { var_include: varProperties, main_include: mainProperties, light_include: lightProperties, dark_include: darkProperties }) const mainTemplate = render(MAIN_TEMPLATE, { var_include: varProperties, main_include: mainProperties, light_include: lightProperties, dark_include: darkProperties }) const lightTemplate = render(LIGHT_TEMPLATE, { var_include: varProperties, main_include: mainProperties, light_include: lightProperties, dark_include: darkProperties }) const darkTemplate = render(DARK_TEMPLATE, { var_include: varProperties, main_include: mainProperties, light_include: lightProperties, dark_include: darkProperties }) const result = ` ${varTemplate} ${mainTemplate} ${lightTemplate} ${darkProperties ? darkTemplate : ''} ${END_TEMPLATE} `.trim() fs.writeFileSync(output, result) console.log('[build root scss file] DONE:'.brightGreen.bold, output.brightGreen) }