Skip to content

Commit 9fdb01f

Browse files
MatrixbirdsBlackHole1LitoMore
authored
chore(web): add inline assets (#1280)
* fix(web): add inline assets * fix(scripts): ci failed * fix(scripts): fix regex * Update web/flat-web/scripts/vite-plugin-inline-assets.ts fix cr Co-authored-by: Black-Hole <[email protected]> * Update web/flat-web/scripts/vite-plugin-inline-assets.ts fix cr Co-authored-by: Black-Hole <[email protected]> * Update web/flat-web/scripts/vite-plugin-inline-assets.ts fix cr Co-authored-by: Black-Hole <[email protected]> * Update web/flat-web/scripts/vite-plugin-inline-assets.ts fix cr Co-authored-by: Black-Hole <[email protected]> * fix(scripts): import @netless/mini-svg-data-uri to encode svg file content * chore(scripts): install mini-svg-data-uri * fix(scripts): fix missing function * Update web/flat-web/scripts/vite-plugin-inline-assets.ts fix cr Co-authored-by: LitoMore <[email protected]> Co-authored-by: Black-Hole <[email protected]> Co-authored-by: LitoMore <[email protected]>
1 parent dbd49e9 commit 9fdb01f

File tree

4 files changed

+53
-7
lines changed

4 files changed

+53
-7
lines changed

web/flat-web/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
"@babel/standalone": "7.14.1",
77
"@hyrious/esbuild-dev": "^0.2.7",
88
"@netless/eslint-plugin": "1.1.2",
9+
"@netless/mini-svg-data-uri": "0.0.1",
910
"@types/loadable__component": "^5.13.3",
1011
"@types/lodash-es": "^4.17.4",
12+
"@types/mime": "^2.0.3",
1113
"@types/node": "^15.0.3",
1214
"@types/react": "^17.0.5",
1315
"@types/react-dom": "^17.0.3",
@@ -30,6 +32,7 @@
3032
"eslint-plugin-react-app": "^6.2.2",
3133
"less": "^4.1.1",
3234
"lint-staged": "^11.0.0",
35+
"mime": "^3.0.0",
3336
"prettier": "^2.3.0",
3437
"vite": "^2.5.0"
3538
},
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import type { Plugin } from "vite";
2+
import { promises as fsp } from "fs";
3+
import mime from "mime/lite";
4+
import svgToTinyDataUri from "@netless/mini-svg-data-uri";
5+
6+
// e.g:
7+
// flat/node_modules/electron/index.js?v=19cea64f => flat/node_modules/electron/index.js
8+
const cleanUrl = (url: string): string => url.replace(/[?#].*$/, "");
9+
10+
export function inlineAssets(): Plugin {
11+
return {
12+
name: "inline:assets",
13+
enforce: "pre",
14+
async transform(_, id: string) {
15+
const filePath = cleanUrl(id);
16+
if (/\.(svg|jpg|jpeg|png|gif)$/i.test(filePath)) {
17+
const imageFileContent = await fsp.readFile(filePath);
18+
const url = filePath.endsWith(".svg")
19+
? svgToTinyDataUri(imageFileContent.toString("utf-8"), "utf8")
20+
: `data:${mime.getType(filePath)};base64,${imageFileContent.toString(
21+
"base64",
22+
)}`;
23+
return `const content = "${url}";export default content;`;
24+
}
25+
return null;
26+
},
27+
};
28+
}

web/flat-web/vite.config.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,10 @@ import path from "path";
55
import { dotenv } from "./scripts/vite-plugin-dotenv";
66
import { injectHtmlHash } from "./scripts/vite-plugin-html-hash";
77
import { version } from "./scripts/vite-plugin-version";
8+
import { inlineAssets } from "./scripts/vite-plugin-inline-assets";
89

910
export default defineConfig({
10-
plugins: [
11-
refresh(),
12-
legacy(),
13-
dotenv(path.join(__dirname, "..", "..", "config")),
14-
injectHtmlHash(),
15-
version(path.join(__dirname, "..", "..", "desktop", "main-app", "package.json")),
16-
],
11+
plugins: [refresh(), legacy(), dotenv("../../config"), injectHtmlHash(), version(path.join(__dirname, "..", "..", "desktop", "main-app", "package.json")), inlineAssets()],
1712
resolve: {
1813
alias: [
1914
// replace webpack alias

yarn.lock

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,11 @@
11111111
dependencies:
11121112
regenerator-runtime "^0.13.4"
11131113

1114+
1115+
version "7.13.9"
1116+
resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.13.9.tgz#38e78673e19f5077f4b294ad346780634e59e276"
1117+
integrity sha512-9ZpIl8rXXQqm5OdsQVhlBSPttwabiHGPGrl5N2bIxB9XS2NJW+1oiPFgMMNd+57C/xVwsEwD2mzv0KValOwlQA==
1118+
11141119
11151120
version "7.14.1"
11161121
resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.14.1.tgz#2c5f6908f03108583eea75bdcc94eb29e720fbac"
@@ -1931,6 +1936,11 @@
19311936
dependencies:
19321937
query-string "^6.13.1"
19331938

1939+
"@netless/[email protected]":
1940+
version "0.0.1"
1941+
resolved "https://registry.yarnpkg.com/@netless/mini-svg-data-uri/-/mini-svg-data-uri-0.0.1.tgz#caae00d4fa23850fbb10644dba8e7bf4b64f7f8d"
1942+
integrity sha512-HsQ04Yzuh8PV4+N31erOeS2pEC6IHGCO/Y7RNwi3AWaQ5ASRpzUka5TxWE4QEXZoseccthcjVL5XN687b/cwRg==
1943+
19341944
"@netless/player-controller@^0.0.9":
19351945
version "0.0.9"
19361946
resolved "https://registry.yarnpkg.com/@netless/player-controller/-/player-controller-0.0.9.tgz#2c2bad03d1d51c623a09cfa3e36a022809242fbb"
@@ -3244,6 +3254,11 @@
32443254
dependencies:
32453255
"@types/braces" "*"
32463256

3257+
"@types/mime@^2.0.3":
3258+
version "2.0.3"
3259+
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a"
3260+
integrity sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==
3261+
32473262
"@types/minimatch@*":
32483263
version "3.0.5"
32493264
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
@@ -11577,6 +11592,11 @@ mime@^2.3.1, mime@^2.4.4, mime@^2.4.5, mime@^2.5.2:
1157711592
resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe"
1157811593
integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==
1157911594

11595+
mime@^3.0.0:
11596+
version "3.0.0"
11597+
resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
11598+
integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
11599+
1158011600
mimic-fn@^2.0.0, mimic-fn@^2.1.0:
1158111601
version "2.1.0"
1158211602
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"

0 commit comments

Comments
 (0)