Files
BetterSEQTA-Plus/vite.config.ts
T
2024-06-19 18:17:57 +10:00

65 lines
1.6 KiB
TypeScript

import { defineConfig, Plugin } from 'vite';
import { join } from 'path';
import fs from 'fs';
import mime from 'mime-types';
import manifest from './manifest.json';
import firefoxManifest from './manifest.firefox.json';
import react from '@vitejs/plugin-react-swc';
//import MillionLint from '@million/lint';
import { crx } from '@crxjs/vite-plugin';
import million from "million/compiler";
const isFirefox = process.env.VITE_TARGET === 'firefox';
const base64Loader = {
name: "base64-loader",
transform(_: any, id: string) {
const [filePath, query] = id.split("?");
if (query !== "base64") return null;
console.log('Converting: ', filePath);
const data = fs.readFileSync(filePath, { encoding: 'base64' });
const mimeType = mime.lookup(filePath);
const dataURL = `data:${mimeType};base64,${data}`;
// Print out first 40 chars for debugging
console.log('Converted: ', dataURL.slice(0, 40));
return `export default '${dataURL}';`;
},
};
const plugins = [
react(),
base64Loader,
million.vite({ auto: true }),
//MillionLint.vite(), /* enable for testing and debugging performance */
crx({
manifest: isFirefox ? firefoxManifest : manifest,
browser: isFirefox ? 'firefox' : 'chrome'
})
];
export default defineConfig({
plugins: plugins,
server: {
port: 5173,
hmr: {
host: "localhost",
protocol: "ws",
port: 5173
}
},
build: {
minify: true,
rollupOptions: {
input: {
settings: join(__dirname, 'src', 'interface', 'index.html'),
backgrounds: join(__dirname, 'src', 'seqta', 'ui', 'background', 'background.html')
}
}
}
});