From a56c79ab6f8c424db0d9875e1e3709b59082ec79 Mon Sep 17 00:00:00 2001
From: MengNianxiaoyao <2589141604@qq.com>
Date: Sun, 7 Jan 2024 13:52:59 +0800
Subject: [PATCH 1/2] chore: add firefox build
---
.eslintignore | 1 +
.gitignore | 1 +
package.json | 8 +++++---
scripts/manifest.ts | 4 ++--
scripts/prepare.ts | 10 +++++-----
tsup.config.ts | 6 +++---
vite-mv3-hmr.ts | 4 ++--
vite.config.content.ts | 4 ++--
vite.config.ts | 4 ++--
9 files changed, 23 insertions(+), 19 deletions(-)
diff --git a/.eslintignore b/.eslintignore
index a8db16f4..99e0829e 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -2,3 +2,4 @@ dist
node_modules
public
extension
+extension-firefox
diff --git a/.gitignore b/.gitignore
index 89e3cdde..fe7e78ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@
dist
dist-ssr
extension/
+extension-firefox/
node_modules
src/auto-imports.d.ts
src/components.d.ts
diff --git a/package.json b/package.json
index d32eb2dc..a9d2dd8b 100644
--- a/package.json
+++ b/package.json
@@ -14,18 +14,20 @@
"dev:js": "npm run build:js -- --mode development",
"dev:bg": "tsup --watch ./src",
"build": "cross-env NODE_ENV=production run-s clear build:web build:prepare build:js build:bg",
- "build-firefox": "cross-env NODE_ENV=production FIREFOX=true run-s clear build:web build:prepare build:js build:bg",
+ "build-firefox": "cross-env NODE_ENV=production FIREFOX=true run-s clear-firefox build:web build:prepare build:js build:bg",
"build:prepare": "esno scripts/prepare.ts",
"build:web": "vite build",
"build:js": "vite build --config vite.config.content.ts",
"build:bg": "tsup",
"pack": "cross-env NODE_ENV=production run-p pack:*",
"pack:zip": "rimraf extension.zip && jszip-cli add extension/* -o ./extension.zip",
+ "pack:firefox-zip": "rimraf extension-firefox.zip && jszip-cli add extension-firefox/* -o ./extension-firefox.zip",
"pack:crx": "crx pack extension -o ./extension.crx",
- "pack:xpi": "cross-env WEB_EXT_ARTIFACTS_DIR=./ FIREFOX=true web-ext build --source-dir ./extension --filename extension.xpi --overwrite-dest",
+ "pack:xpi": "cross-env WEB_EXT_ARTIFACTS_DIR=./ FIREFOX=true web-ext build --source-dir ./extension-firefox --filename extension.xpi --overwrite-dest",
"start:chromium": "web-ext run --source-dir ./extension --target=chromium",
- "start:firefox": "web-ext run --source-dir ./extension --target=firefox-desktop",
+ "start:firefox": "web-ext run --source-dir ./extension-firefox --target=firefox-desktop",
"clear": "rimraf extension extension.*",
+ "clear-firefox": "rimraf extension-firefox extension-firefox.*",
"lint": "eslint .",
"test": "vitest test",
"postinstall": "npx simple-git-hooks"
diff --git a/scripts/manifest.ts b/scripts/manifest.ts
index 4a9b696b..dbe354b7 100644
--- a/scripts/manifest.ts
+++ b/scripts/manifest.ts
@@ -1,9 +1,9 @@
import fs from 'fs-extra'
import { getManifest } from '../src/manifest'
-import { log, r } from './utils'
+import { isFirefox, log, r } from './utils'
export async function writeManifest() {
- await fs.writeJSON(r('extension/manifest.json'), await getManifest(), { spaces: 2 })
+ await fs.writeJSON(r(isFirefox ? 'extension-firefox/manifest.json' : 'extension/manifest.json'), await getManifest(), { spaces: 2 })
log('PRE', 'write manifest.json')
}
diff --git a/scripts/prepare.ts b/scripts/prepare.ts
index a1b353c7..c36835c2 100644
--- a/scripts/prepare.ts
+++ b/scripts/prepare.ts
@@ -2,7 +2,7 @@
import { execSync } from 'node:child_process'
import fs from 'fs-extra'
import chokidar from 'chokidar'
-import { isDev, log, r } from './utils'
+import { isDev, isFirefox, log, r } from './utils'
/**
* Stub index.html to use Vite in development
@@ -14,12 +14,12 @@ async function stubIndexHtml() {
]
for (const view of views) {
- await fs.ensureDir(r(`extension/dist/${view}`))
+ await fs.ensureDir(r(isFirefox ? `extension-firefox/dist/${view}` : `extension/dist/${view}`))
let data = await fs.readFile(r(`src/${view}/index.html`), 'utf-8')
data = data
.replace('"./main.ts"', `"/${view}/main.ts.js"`)
.replace('
', 'Vite server did not start
')
- await fs.writeFile(r(`extension/dist/${view}/index.html`), data, 'utf-8')
+ await fs.writeFile(r(isFirefox ? `extension-firefox/dist/${view}/index.html` : `extension/dist/${view}/index.html`), data, 'utf-8')
log('PRE', `stub ${view}`)
}
}
@@ -28,8 +28,8 @@ function writeManifest() {
execSync('npx esno ./scripts/manifest.ts', { stdio: 'inherit' })
}
-fs.ensureDirSync(r('extension'))
-fs.copySync(r('assets'), r('extension/assets'))
+fs.ensureDirSync(r(isFirefox ? 'extension-firefox' : 'extension'))
+fs.copySync(r('assets'), r(isFirefox ? 'extension-firefox/assets' : 'extension/assets'))
writeManifest()
if (isDev) {
diff --git a/tsup.config.ts b/tsup.config.ts
index 35f06e7a..ddaa3205 100644
--- a/tsup.config.ts
+++ b/tsup.config.ts
@@ -1,15 +1,15 @@
import { defineConfig } from 'tsup'
-import { isDev } from './scripts/utils'
+import { isDev, isFirefox } from './scripts/utils'
export default defineConfig(() => ({
entry: {
'background/index': './src/background/index.ts',
...(isDev ? { mv3client: './scripts/client.ts' } : {}),
},
- outDir: 'extension/dist',
+ outDir: isFirefox ? 'extension-firefox/dist' : 'extension/dist',
format: ['esm'],
target: 'esnext',
- ignoreWatch: ['**/extension/**'],
+ ignoreWatch: ['**/extension/**', '**/extension-firefox/**'],
splitting: false,
sourcemap: isDev ? 'inline' : false,
define: {
diff --git a/vite-mv3-hmr.ts b/vite-mv3-hmr.ts
index 188304cf..fd211cbd 100644
--- a/vite-mv3-hmr.ts
+++ b/vite-mv3-hmr.ts
@@ -1,9 +1,9 @@
import { dirname, join } from 'node:path'
import type { HMRPayload, PluginOption } from 'vite'
import fs from 'fs-extra'
-import { isWin, r } from './scripts/utils'
+import { isFirefox, isWin, r } from './scripts/utils'
-const targetDir = r('extension')
+const targetDir = r(isFirefox ? 'extension-firefox' : 'extension')
export function MV3Hmr(): PluginOption {
return {
diff --git a/vite.config.content.ts b/vite.config.content.ts
index 2b77fbbe..268b4406 100644
--- a/vite.config.content.ts
+++ b/vite.config.content.ts
@@ -1,6 +1,6 @@
import { defineConfig } from 'vite'
import { sharedConfig } from './vite.config'
-import { isDev, r } from './scripts/utils'
+import { isDev, isFirefox, r } from './scripts/utils'
import packageJson from './package.json'
// bundling the content script using Vite
@@ -10,7 +10,7 @@ export default defineConfig({
watch: isDev
? {}
: undefined,
- outDir: r('extension/dist/contentScripts'),
+ outDir: r(isFirefox ? 'extension-firefox/dist/contentScripts' : 'extension/dist/contentScripts'),
cssCodeSplit: false,
emptyOutDir: false,
sourcemap: isDev ? 'inline' : false,
diff --git a/vite.config.ts b/vite.config.ts
index 88ea5ccc..214fcaab 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -11,7 +11,7 @@ import Components from 'unplugin-vue-components/vite'
import AutoImport from 'unplugin-auto-import/vite'
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
import UnoCSS from 'unocss/vite'
-import { isDev, port, r } from './scripts/utils'
+import { isDev, isFirefox, port, r } from './scripts/utils'
import { MV3Hmr } from './vite-mv3-hmr'
export const sharedConfig: UserConfig = {
@@ -102,7 +102,7 @@ export default defineConfig(({ command }) => ({
},
},
build: {
- outDir: r('extension/dist'),
+ outDir: r(isFirefox ? 'extension-firefox/dist' : 'extension/dist'),
emptyOutDir: false,
sourcemap: isDev ? 'inline' : false,
// https://developer.chrome.com/docs/webstore/program_policies/#:~:text=Code%20Readability%20Requirements
From 37deae6ddc491903745278310eb4c8b53cc96a29 Mon Sep 17 00:00:00 2001
From: MengNianxiaoyao <2589141604@qq.com>
Date: Sun, 7 Jan 2024 15:23:00 +0800
Subject: [PATCH 2/2] chore: firefox build to update
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index a9d2dd8b..e289120d 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"homepage": "https://github.com/hakadao/BewlyBewly",
"scripts": {
"dev": "npm run clear && cross-env NODE_ENV=development run-p dev:*",
- "dev-firefox": "npm run clear && cross-env NODE_ENV=development FIREFOX=true run-p dev:*",
+ "dev-firefox": "npm run clear-firefox && cross-env NODE_ENV=development FIREFOX=true run-p dev:*",
"dev:prepare": "esno scripts/prepare.ts",
"dev:web": "vite",
"dev:js": "npm run build:js -- --mode development",
@@ -21,7 +21,7 @@
"build:bg": "tsup",
"pack": "cross-env NODE_ENV=production run-p pack:*",
"pack:zip": "rimraf extension.zip && jszip-cli add extension/* -o ./extension.zip",
- "pack:firefox-zip": "rimraf extension-firefox.zip && jszip-cli add extension-firefox/* -o ./extension-firefox.zip",
+ "pack:zip-firefox": "rimraf extension-firefox.zip && jszip-cli add extension-firefox/* -o ./extension-firefox.zip",
"pack:crx": "crx pack extension -o ./extension.crx",
"pack:xpi": "cross-env WEB_EXT_ARTIFACTS_DIR=./ FIREFOX=true web-ext build --source-dir ./extension-firefox --filename extension.xpi --overwrite-dest",
"start:chromium": "web-ext run --source-dir ./extension --target=chromium",