mytril
Version:
Mytril Svelte library component for rapidly building modern websites based on Svelte and Sveltekit
40 lines (39 loc) • 1.62 kB
JavaScript
import { mytrilConfig } from './config.js';
import { mytrilImporter } from '../../importer.js';
import { mytrilCSS } from '../css/plugin.js';
/**
* A Vite plugin for Mytril that handles configuration and file watching.
*
* @param props - An object containing optional properties.
* @param props.modeDev - A boolean indicating if the developer mode is enabled.
* @returns An object representing the Vite plugin.
*/
export async function mytril() {
return {
name: 'mytril/vite.js',
async configResolved() {
const configurationGlobal = await mytrilImporter();
const viteConf = mytrilConfig(configurationGlobal.params);
await mytrilCSS(viteConf);
},
async configureServer(server) {
server.watcher.add('./vite.config.ts');
server.watcher.add('./vite.config.js');
server.watcher.add('./mytril.config.js');
server.watcher.on('change', async (filePath) => {
if (String(filePath).includes('mytril.config.js')) {
const configurationGlobal = await mytrilImporter();
const viteConf = mytrilConfig(configurationGlobal.params);
await mytrilCSS(viteConf);
}
});
},
async transform(code, id) {
if (id.includes('mytril/dist/styles/') && id.endsWith('.css')) {
const configurationGlobal = await mytrilImporter();
const viteConf = mytrilConfig(configurationGlobal.params);
await mytrilCSS(viteConf);
}
}
};
}