diff --git a/vite.config.ts b/vite.config.ts index 05c1740..a5d94de 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,30 @@ import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' +import { readFileSync } from 'fs'; +import { read, utils } from 'xlsx'; -// https://vitejs.dev/config/ export default defineConfig({ - plugins: [vue()], -}) + assetsInclude: ['**/*.xlsx'], // xlsx file should be treated as assets + + plugins: [ + vue(), + { // this plugin handles ?sheetjs tags + name: "vite-sheet", + transform(code, id) { + if(!id.match(/\?sheetjs$/)) return; + var wb = read(readFileSync(id.replace(/\?sheetjs$/, ""))); + var data = utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); + return `export default JSON.parse('${JSON.stringify(data)}')`; + } + }, + { // this plugin handles ?b64 tags + name: "vite-b64-plugin", + transform(code, id) { + if(!id.match(/\?b64$/)) return; + var path = id.replace(/\?b64/, ""); + var data = readFileSync(path, "base64"); + return `export default '${data}'`; + } + } + ] +}); \ No newline at end of file