From 7b635043235bf33563978994c9007141e31f95b8 Mon Sep 17 00:00:00 2001 From: Bauke Date: Wed, 23 Mar 2022 13:48:20 +0100 Subject: [PATCH] Add build support for Chromium. --- package.json | 5 ++++- vite.config.ts | 36 ++++++++++++++++++++++++------------ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 8da215c..61b3f7a 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,11 @@ "private": true, "scripts": { "start": "vite build -m development --watch", + "start:chromium": "VITE_BROWSER=chromium pnpm start", "clean": "trash build web-ext-artifacts", - "build": "pnpm clean && vite build && web-ext build --source-dir build && pnpm zip-source", + "build": "pnpm clean && pnpm build:chromium && pnpm build:firefox && pnpm zip-source", + "build:chromium": "VITE_BROWSER=chromium vite build && web-ext build -n fangs-chromium-{version}.zip -s build/chromium", + "build:firefox": "VITE_BROWSER=firefox vite build && web-ext build -n fangs-firefox-{version}.zip -s build/firefox", "zip-source": "git archive --format zip --output web-ext-artifacts/fangs-source.zip HEAD", "test": "xo && stylelint 'source/**/*.scss' && tsc && c8 ava" }, diff --git a/vite.config.ts b/vite.config.ts index 94bd5eb..3fb506f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,5 +1,6 @@ import fs from 'node:fs'; import path from 'node:path'; +import process from 'node:process'; import url from 'node:url'; import {defineConfig} from 'vite'; @@ -8,13 +9,30 @@ import {defineConfig} from 'vite'; import preactPreset from '@preact/preset-vite'; import webExtension from 'vite-plugin-web-extension'; -const currentDir = path.dirname(url.fileURLToPath(import.meta.url)); +const targetBrowser = process.env.VITE_BROWSER ?? 'firefox'; +process.env.VITE_BROWSER = targetBrowser; -const buildDir = path.join(currentDir, 'build'); +const currentDir = path.dirname(url.fileURLToPath(import.meta.url)); +const buildDir = path.join(currentDir, 'build', targetBrowser); const sourceDir = path.join(currentDir, 'source'); -// Create the Firefox profile if it doesn't already exist. -fs.mkdirSync(path.join(currentDir, 'firefox'), {recursive: true}); +// Create the browser profile if it doesn't already exist. +fs.mkdirSync(path.join(currentDir, targetBrowser), {recursive: true}); + +const webExtConfig: Record = { + 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'; +} export default defineConfig({ build: { @@ -28,15 +46,9 @@ export default defineConfig({ // https://github.com/aklinker1/vite-plugin-web-extension webExtension({ assets: 'assets', - browser: 'firefox', + browser: targetBrowser, manifest: path.join(sourceDir, 'manifest.json'), - webExtConfig: { - browserConsole: true, - firefoxProfile: 'firefox/', - keepProfileChanges: true, - startUrl: 'about:debugging#/runtime/this-firefox', - target: 'firefox-desktop', - }, + webExtConfig, }), ], root: sourceDir,