46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
import twigInstance from '@vituum/vite-plugin-twig';
|
|
import fs from 'node:fs';
|
|
import nodePath from 'node:path';
|
|
import { appData, envData } from './app.js';
|
|
import { absPath, pathSrc } from './path.js';
|
|
|
|
const tablerIconsAbsPath = nodePath.join(absPath.node, '@tabler', 'icons', 'icons');
|
|
|
|
const twigConfig = {
|
|
root: pathSrc,
|
|
globals: getTwigGlobals(),
|
|
namespaces: {
|
|
node: absPath.node,
|
|
component: absPath.component,
|
|
layout: absPath.layout,
|
|
view: absPath.view,
|
|
ti: nodePath.join(tablerIconsAbsPath, 'outline'),
|
|
'ti-filled': nodePath.join(tablerIconsAbsPath, 'filled'),
|
|
},
|
|
};
|
|
|
|
const twig = () => twigInstance(twigConfig);
|
|
|
|
function getTwigGlobals() {
|
|
const data = {
|
|
...appData,
|
|
...envData,
|
|
};
|
|
|
|
const dataFolder = absPath.data;
|
|
const dataFiles = fs.readdirSync(dataFolder).filter((file) => file.endsWith('.json')) || [];
|
|
|
|
dataFiles.forEach((file) => {
|
|
const filePath = nodePath.join(dataFolder, file);
|
|
const fileContent = fs.readFileSync(filePath, 'utf8') || '{}';
|
|
const fileData = JSON.parse(fileContent);
|
|
const fileName = file.replace('.json', '').replace(/[\s-]+/g, '_').replace(/[^a-z_]+/g, '').replace(/(_)./g, (s) => s.slice(-1).toUpperCase());
|
|
|
|
data[fileName] = fileData;
|
|
});
|
|
|
|
return data;
|
|
}
|
|
|
|
export default twig;
|