@namelessmedia/tisc_nuxt
Version:
TISC NUXT Component Library
79 lines (66 loc) • 2.11 kB
JavaScript
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)
}