fangs/vite.config.ts

58 lines
1.6 KiB
TypeScript
Raw Normal View History

2022-03-14 09:58:47 +00:00
import fs from 'node:fs';
import path from 'node:path';
2022-03-23 12:48:20 +00:00
import process from 'node:process';
2022-03-14 09:58:47 +00:00
import url from 'node:url';
import {defineConfig} from 'vite';
// Vite Plugins
import preactPreset from '@preact/preset-vite';
import webExtension from 'vite-plugin-web-extension';
import createManifest from './source/manifest.js';
2022-03-23 12:48:20 +00:00
const targetBrowser = process.env.VITE_BROWSER ?? 'firefox';
process.env.VITE_BROWSER = targetBrowser;
2022-03-14 09:58:47 +00:00
2022-03-23 12:48:20 +00:00
const currentDir = path.dirname(url.fileURLToPath(import.meta.url));
const buildDir = path.join(currentDir, 'build', targetBrowser);
2022-03-14 09:58:47 +00:00
const sourceDir = path.join(currentDir, 'source');
2022-03-23 12:48:20 +00:00
// Create the browser profile if it doesn't already exist.
fs.mkdirSync(path.join(currentDir, targetBrowser), {recursive: true});
const webExtConfig: Record<string, unknown> = {
browserConsole: true,
chromiumProfile: 'chromium/',
firefoxProfile: 'firefox/',
keepProfileChanges: true,
};
if (targetBrowser === 'chromium') {
webExtConfig.startUrl = 'chrome://extensions/';
webExtConfig.target = 'chromium';
} else {
webExtConfig.startUrl = 'about:debugging#/runtime/this-firefox';
webExtConfig.target = 'firefox-desktop';
}
2022-03-14 09:58:47 +00:00
export default defineConfig({
build: {
outDir: buildDir,
2022-03-16 20:57:45 +00:00
minify: false,
2022-03-14 09:58:47 +00:00
sourcemap: 'inline',
},
plugins: [
preactPreset(),
// See vite-plugin-web-extension for documentation.
// https://github.com/aklinker1/vite-plugin-web-extension
webExtension({
assets: 'assets',
2022-03-23 12:48:20 +00:00
browser: targetBrowser,
manifest: () => createManifest(targetBrowser),
2022-03-23 12:48:20 +00:00
webExtConfig,
2022-03-14 09:58:47 +00:00
}),
],
root: sourceDir,
});