forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			30 lines
		
	
	
		
			931 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			30 lines
		
	
	
		
			931 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import { defineConfig } from 'vite' | ||
|  | import vue from '@vitejs/plugin-vue' | ||
|  | import { readFileSync } from 'fs'; | ||
|  | import { read, utils } from 'xlsx'; | ||
|  | 
 | ||
|  | export default defineConfig({ | ||
|  |   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}'`; | ||
|  |       } | ||
|  |     } | ||
|  |   ] | ||
|  | }); |