Skip to content

Commit 51febf6

Browse files
committed
build: improve build processes and scripts
1 parent 69d53c4 commit 51febf6

File tree

7 files changed

+80
-73
lines changed

7 files changed

+80
-73
lines changed

.github/workflows/deployment.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ jobs:
3030
[ -n "${{ steps.semver.outputs.prerelease }}" ] && exit 14
3131
exit 0
3232
fi
33-
- run: npm install
33+
- run: npm ci
3434
- run: npm run lint:js
3535
- run: npm run lint:css
36-
- run: npm run build:${{ matrix.platform }}-beta
36+
- run: BETA=1 npm run build:${{ matrix.platform }}-safari-15
3737
if: ${{ github.event.release.prerelease }}
38-
- run: npm run build:${{ matrix.platform }}
38+
- run: npm run build:${{ matrix.platform }}-safari-15
3939
if: ${{ ! github.event.release.prerelease }}
4040
- name: Set xcode version
4141
run: sudo xcode-select -s "/Applications/Xcode_15.4.app" # https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md#xcode

package.json

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,12 @@
55
"sideEffects": false,
66
"scripts": {
77
"dev": "vite",
8-
"dev:ext-safari-mac": "SAFARI_PLATFORM=mac node scripts/dev-ext-safari.js",
9-
"dev:ext-safari-ios": "SAFARI_PLATFORM=ios node scripts/dev-ext-safari.js",
10-
"build:mac": "npm run build:app && npm run build:ext-safari-mac",
11-
"build:ios": "npm run build:app && npm run build:ext-safari-ios",
12-
"build:mac-beta": "npm run build:app && BETA=1 npm run build:ext-safari-mac",
13-
"build:ios-beta": "npm run build:app && BETA=1 npm run build:ext-safari-ios",
14-
"build:app": "node scripts/build-app.js",
15-
"build:ext-safari-mac": "SAFARI_PLATFORM=mac node scripts/build-ext-safari-15.js",
16-
"build:ext-safari-ios": "SAFARI_PLATFORM=ios node scripts/build-ext-safari-15.js",
17-
"build:ext-safari-mac-16.4": "SAFARI_PLATFORM=mac node scripts/build-ext-safari-16.4.js",
18-
"build:ext-safari-ios-16.4": "SAFARI_PLATFORM=ios node scripts/build-ext-safari-16.4.js",
8+
"dev:mac-safari": "SAFARI_PLATFORM=mac node scripts/dev-safari.js",
9+
"dev:ios-safari": "SAFARI_PLATFORM=ios node scripts/dev-safari.js",
10+
"build:mac-safari-15": "SAFARI_PLATFORM=mac node scripts/build-safari-15.js",
11+
"build:ios-safari-15": "SAFARI_PLATFORM=ios node scripts/build-safari-15.js",
12+
"build:mac-safari-16.4": "SAFARI_PLATFORM=mac node scripts/build-safari-16.4.js",
13+
"build:ios-safari-16.4": "SAFARI_PLATFORM=ios node scripts/build-safari-16.4.js",
1914
"lint:js": "eslint . && prettier --check . --plugin prettier-plugin-svelte",
2015
"lint:css": "stylelint '**/*.{css,html,svelte}'",
2116
"prettier": "prettier --write . --plugin prettier-plugin-svelte"

scripts/build-app.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

scripts/build-ext-safari-15.js renamed to scripts/build-safari-15.js

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/**
2-
* @file Build Safari extension resources using the Vite JavaScript API
2+
* @file Build App-WebView and Safari-Extension resources using the Vite JavaScript API
33
* @see {@link https://vitejs.dev/guide/api-javascript.html JavaScript API}
44
*
55
* Safari supports for modules in background since 16.4
66
* @see {@link https://developer.apple.com/documentation/safari-release-notes/safari-16_4-release-notes#Safari-Extensions}
77
* @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background#browser_compatibility}
8-
* To ensure forward compatibility, background script use independent builds in v4
8+
* To ensure forward compatibility, background script use independent builds for safari 15
99
*
1010
* Content scripts not support import modules, and due to their privileges and the
1111
* speed of injecting user scripts, use a independent build currently
@@ -25,16 +25,35 @@ const sharedConfig = {
2525
...Utils.baseConfig.define,
2626
"import.meta.env.SAFARI_VERSION": JSON.stringify(15),
2727
},
28+
build: {
29+
sourcemap: process.env.BETA ? true : false,
30+
target: "safari15",
31+
},
2832
};
29-
const sourcemap = process.env.BETA ? true : false;
33+
34+
/**
35+
* Build App-Shared WebView resources to xcode dist
36+
*/
37+
build({
38+
...Utils.baseConfig,
39+
plugins: [svelte()],
40+
build: {
41+
...sharedConfig.build,
42+
outDir: `${Utils.APP_SHARED_RESOURCES}/dist/`,
43+
copyPublicDir: false,
44+
rollupOptions: {
45+
input: "entry-app-webview.html",
46+
},
47+
},
48+
});
3049

3150
/**
3251
* Empty resources directory
3352
* Copy public static assets
3453
*/
35-
await Utils.emptyBuildDir(Utils.SAFARI_EXT_RESOURCES);
36-
Utils.cp("public/ext/shared", Utils.SAFARI_EXT_RESOURCES);
37-
Utils.cp("public/ext/safari-15", Utils.SAFARI_EXT_RESOURCES);
54+
await Utils.emptyBuildDir(Utils.EXT_SAFARI_RESOURCES);
55+
Utils.cp("public/ext/shared", Utils.EXT_SAFARI_RESOURCES);
56+
Utils.cp("public/ext/safari-15", Utils.EXT_SAFARI_RESOURCES);
3857

3958
/** Build content scripts */
4059
[
@@ -45,10 +64,10 @@ Utils.cp("public/ext/safari-15", Utils.SAFARI_EXT_RESOURCES);
4564
build({
4665
...sharedConfig,
4766
build: {
48-
outDir: `${Utils.SAFARI_EXT_RESOURCES}/dist/content-scripts/`,
67+
...sharedConfig.build,
68+
outDir: `${Utils.EXT_SAFARI_RESOURCES}/dist/content-scripts/`,
4969
emptyOutDir: false,
5070
copyPublicDir: false,
51-
sourcemap,
5271
rollupOptions: {
5372
input,
5473
output: { entryFileNames: "[name].js" },
@@ -61,10 +80,10 @@ Utils.cp("public/ext/safari-15", Utils.SAFARI_EXT_RESOURCES);
6180
build({
6281
...sharedConfig,
6382
build: {
64-
outDir: `${Utils.SAFARI_EXT_RESOURCES}/dist/`,
83+
...sharedConfig.build,
84+
outDir: `${Utils.EXT_SAFARI_RESOURCES}/dist/`,
6585
emptyOutDir: false,
6686
copyPublicDir: false,
67-
sourcemap,
6887
rollupOptions: {
6988
input: { background: "src/ext/background/main.js" },
7089
output: { entryFileNames: "[name].js" },
@@ -78,9 +97,9 @@ build({
7897
plugins: [svelte()],
7998
publicDir: "public/ext/vendor/",
8099
build: {
81-
outDir: `${Utils.SAFARI_EXT_RESOURCES}/dist/`,
100+
...sharedConfig.build,
101+
outDir: `${Utils.EXT_SAFARI_RESOURCES}/dist/`,
82102
emptyOutDir: false,
83-
sourcemap,
84103
rollupOptions: {
85104
input: ["entry-ext-action-popup.html", "entry-ext-extension-page.html"],
86105
},

scripts/build-ext-safari-16.4.js renamed to scripts/build-safari-16.4.js

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* @file Build Safari extension resources using the Vite JavaScript API
2+
* @file Build App-WebView and Safari-Extension resources using the Vite JavaScript API
33
* @see {@link https://vitejs.dev/guide/api-javascript.html JavaScript API}
44
*
55
* Safari supports for modules in background since 16.4
@@ -24,16 +24,35 @@ const sharedConfig = {
2424
...Utils.baseConfig.define,
2525
"import.meta.env.SAFARI_VERSION": JSON.stringify(16.4),
2626
},
27+
build: {
28+
sourcemap: process.env.BETA ? true : false,
29+
target: "safari16.4",
30+
},
2731
};
28-
const sourcemap = process.env.BETA ? true : false;
32+
33+
/**
34+
* Build App-Shared WebView resources to xcode dist
35+
*/
36+
build({
37+
...Utils.baseConfig,
38+
plugins: [svelte()],
39+
build: {
40+
...sharedConfig.build,
41+
outDir: `${Utils.APP_SHARED_RESOURCES}/dist/`,
42+
copyPublicDir: false,
43+
rollupOptions: {
44+
input: "entry-app-webview.html",
45+
},
46+
},
47+
});
2948

3049
/**
3150
* Empty resources directory
3251
* Copy public static assets
3352
*/
34-
await Utils.emptyBuildDir(Utils.SAFARI_EXT_RESOURCES);
35-
Utils.cp("public/ext/shared", Utils.SAFARI_EXT_RESOURCES);
36-
Utils.cp("public/ext/safari-16.4", Utils.SAFARI_EXT_RESOURCES);
53+
await Utils.emptyBuildDir(Utils.EXT_SAFARI_RESOURCES);
54+
Utils.cp("public/ext/shared", Utils.EXT_SAFARI_RESOURCES);
55+
Utils.cp("public/ext/safari-16.4", Utils.EXT_SAFARI_RESOURCES);
3756

3857
/** Build content scripts */
3958
[
@@ -44,10 +63,10 @@ Utils.cp("public/ext/safari-16.4", Utils.SAFARI_EXT_RESOURCES);
4463
build({
4564
...sharedConfig,
4665
build: {
47-
outDir: `${Utils.SAFARI_EXT_RESOURCES}/dist/content-scripts/`,
66+
...sharedConfig.build,
67+
outDir: `${Utils.EXT_SAFARI_RESOURCES}/dist/content-scripts/`,
4868
emptyOutDir: false,
4969
copyPublicDir: false,
50-
sourcemap,
5170
rollupOptions: {
5271
input,
5372
output: { entryFileNames: "[name].js" },
@@ -64,10 +83,10 @@ Utils.cp("public/ext/safari-16.4", Utils.SAFARI_EXT_RESOURCES);
6483
build({
6584
...sharedConfig,
6685
build: {
67-
outDir: `${Utils.SAFARI_EXT_RESOURCES}/dist/`,
86+
...sharedConfig.build,
87+
outDir: `${Utils.EXT_SAFARI_RESOURCES}/dist/`,
6888
emptyOutDir: false,
6989
copyPublicDir: false,
70-
sourcemap,
7190
rollupOptions: {
7291
input: { background: "src/ext/background/main.js" },
7392
output: { entryFileNames: "[name].js" },
@@ -81,9 +100,9 @@ build({
81100
plugins: [svelte()],
82101
publicDir: "public/ext/vendor/",
83102
build: {
84-
outDir: `${Utils.SAFARI_EXT_RESOURCES}/dist/`,
103+
...sharedConfig.build,
104+
outDir: `${Utils.EXT_SAFARI_RESOURCES}/dist/`,
85105
emptyOutDir: false,
86-
sourcemap,
87106
rollupOptions: {
88107
input: {
89108
// background: "src/ext/background/main.js",

scripts/dev-ext-safari.js renamed to scripts/dev-safari.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,18 @@ async function buildResources(server, origin) {
3333
* copy public static assets
3434
*/
3535
await Utils.emptyBuildDir("dist");
36-
await Utils.emptyBuildDir(Utils.SAFARI_EXT_RESOURCES);
37-
Utils.cp("public/ext/shared", Utils.SAFARI_EXT_RESOURCES);
38-
Utils.cp("public/ext/shared-dev", Utils.SAFARI_EXT_RESOURCES);
36+
await Utils.emptyBuildDir(Utils.EXT_SAFARI_RESOURCES);
37+
Utils.cp("public/ext/shared", Utils.EXT_SAFARI_RESOURCES);
38+
Utils.cp("public/ext/shared-dev", Utils.EXT_SAFARI_RESOURCES);
3939
if (process.env.SAFARI_PLATFORM === "ios") {
4040
Utils.cp(
4141
"public/ext/safari-dev/manifest-ios.json",
42-
`${Utils.SAFARI_EXT_RESOURCES}/manifest.json`,
42+
`${Utils.EXT_SAFARI_RESOURCES}/manifest.json`,
4343
);
4444
} else {
4545
Utils.cp(
4646
"public/ext/safari-dev/manifest-mac.json",
47-
`${Utils.SAFARI_EXT_RESOURCES}/manifest.json`,
47+
`${Utils.EXT_SAFARI_RESOURCES}/manifest.json`,
4848
);
4949
}
5050

@@ -81,7 +81,7 @@ async function buildResources(server, origin) {
8181
},
8282
],
8383
build: {
84-
outDir: `${Utils.SAFARI_EXT_RESOURCES}/dist/content-scripts/`,
84+
outDir: `${Utils.EXT_SAFARI_RESOURCES}/dist/content-scripts/`,
8585
emptyOutDir: false,
8686
copyPublicDir: false,
8787
rollupOptions: {
@@ -128,7 +128,7 @@ async function buildResources(server, origin) {
128128
},
129129
],
130130
build: {
131-
outDir: `${Utils.SAFARI_EXT_RESOURCES}/dist/`,
131+
outDir: `${Utils.EXT_SAFARI_RESOURCES}/dist/`,
132132
emptyOutDir: false,
133133
rollupOptions: {
134134
input: {

scripts/utils.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ import {
3535
const execFileAsync = promisify(execFile);
3636

3737
/** Define shared constants */
38-
export const SAFARI_APP_RESOURCES = "xcode/App-Shared/Resources";
39-
export const SAFARI_EXT_RESOURCES = "xcode/Ext-Safari/Resources";
38+
export const APP_SHARED_RESOURCES = "xcode/App-Shared/Resources";
39+
export const EXT_SAFARI_RESOURCES = "xcode/Ext-Safari/Resources";
4040

4141
/**
4242
* If not then cd to root dir and returns the path
@@ -59,7 +59,7 @@ export async function rootDir() {
5959
* @returns {Promise<boolean>}
6060
*/
6161
export async function emptyBuildDir(dir) {
62-
const buildPaths = ["dist", SAFARI_APP_RESOURCES, SAFARI_EXT_RESOURCES];
62+
const buildPaths = ["dist", EXT_SAFARI_RESOURCES];
6363
if (!buildPaths.includes(dir)) {
6464
console.error("Non-build path, cannot be empty.");
6565
return false;

0 commit comments

Comments
 (0)