import { Plugin } from 'vite'; import { Config } from './config'; // Replaces app.css with the contents of the file specified in the // config file. export const themePlugin = (): Plugin => { const themeFolder = Config.THEME; console.log(`Using theme folder: ${themeFolder}`); return { name: 'theme-generator', enforce: 'pre', // Ensure this plugin runs first transform(code, id) { if (id.endsWith('app.css')) { // Read the theme file and replace the contents of app.css with it // Needs full path to the file const themeCode = Deno.readTextFileSync(Deno.cwd() + '/themes/' + themeFolder + '/theme.css'); // Replace the contents of app.css with the theme code // and add a comment at the top const themeComment = `/* Generated from ${themeFolder} */\n`; const themeCodeWithComment = themeComment + themeCode; // Return the theme code as the new contents of app.css return { code: themeCodeWithComment, map: null, }; } return null; } }; };