optimize userscript size
This commit is contained in:
@@ -109,7 +109,7 @@ const userscriptWebpack = (config, env) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
config.output.filename = "[name].js";
|
config.output.filename = "[name].js";
|
||||||
config.output.publicPath = "./";
|
config.output.publicPath = env === "production" ? "./" : "/";
|
||||||
config.optimization.splitChunks = { cacheGroups: { default: false } };
|
config.optimization.splitChunks = { cacheGroups: { default: false } };
|
||||||
config.optimization.runtimeChunk = false;
|
config.optimization.runtimeChunk = false;
|
||||||
config.optimization.minimize = false;
|
config.optimization.minimize = false;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "REACT_APP_CLIENT=web react-app-rewired start",
|
"start": "REACT_APP_CLIENT=web react-app-rewired start",
|
||||||
|
"start:userscript": "REACT_APP_CLIENT=userscript react-app-rewired start",
|
||||||
"build": "rm -rf build/chrome && BUILD_PATH=./build/chrome REACT_APP_CLIENT=chrome react-app-rewired build",
|
"build": "rm -rf build/chrome && BUILD_PATH=./build/chrome REACT_APP_CLIENT=chrome react-app-rewired build",
|
||||||
"build:edge": "rm -rf build/edge && cp -r build/chrome build/edge",
|
"build:edge": "rm -rf build/edge && cp -r build/chrome build/edge",
|
||||||
"build:firefox": "rm -rf build/firefox && cp -r build/chrome build/firefox && cat ./build/firefox/manifest.firefox.json > ./build/firefox/manifest.json",
|
"build:firefox": "rm -rf build/firefox && cp -r build/chrome build/firefox && cat ./build/firefox/manifest.firefox.json > ./build/firefox/manifest.json",
|
||||||
|
|||||||
@@ -27,3 +27,11 @@ export const matchValue = (arr, val) => {
|
|||||||
}
|
}
|
||||||
return arr[0];
|
return arr[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 等待
|
||||||
|
* @param {*} delay
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export const sleep = (delay) =>
|
||||||
|
new Promise((resolve) => setTimeout(resolve, delay));
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import ReactDOM from "react-dom/client";
|
import ReactDOM from "react-dom/client";
|
||||||
import Options from "./views/Options";
|
|
||||||
import Action from "./views/Action";
|
import Action from "./views/Action";
|
||||||
import createCache from "@emotion/cache";
|
import createCache from "@emotion/cache";
|
||||||
import { CacheProvider } from "@emotion/react";
|
import { CacheProvider } from "@emotion/react";
|
||||||
@@ -20,12 +19,11 @@ import { Translator } from "./libs/translator";
|
|||||||
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE) ||
|
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE) ||
|
||||||
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE2)
|
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE2)
|
||||||
) {
|
) {
|
||||||
const root = ReactDOM.createRoot(document.getElementById("root"));
|
window.unsafeWindow.GM = window.GM;
|
||||||
root.render(
|
window.unsafeWindow.GM_xmlhttpRequest = window.GM_xmlhttpRequest;
|
||||||
<React.StrictMode>
|
window.unsafeWindow.GM_setValue = window.GM_setValue;
|
||||||
<Options />
|
window.unsafeWindow.GM_getValue = window.GM_getValue;
|
||||||
</React.StrictMode>
|
window.unsafeWindow.GM_deleteValue = window.GM_deleteValue;
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,59 @@ import Layout from "./Layout";
|
|||||||
import SyncSetting from "./SyncSetting";
|
import SyncSetting from "./SyncSetting";
|
||||||
import { StoragesProvider } from "../../hooks/Storage";
|
import { StoragesProvider } from "../../hooks/Storage";
|
||||||
import ThemeProvider from "../../hooks/Theme";
|
import ThemeProvider from "../../hooks/Theme";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import { isGm } from "../../libs/browser";
|
||||||
|
import { sleep } from "../../libs/utils";
|
||||||
|
|
||||||
export default function Options() {
|
export default function Options() {
|
||||||
|
const [error, setError] = useState(false);
|
||||||
|
const [ready, setReady] = useState(false);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!isGm) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
let i = 0;
|
||||||
|
for (;;) {
|
||||||
|
await sleep(1000);
|
||||||
|
if (window.GM) {
|
||||||
|
setReady(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (++i > 8) {
|
||||||
|
setError(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
return (
|
||||||
|
<center>
|
||||||
|
<h2>
|
||||||
|
Please confirm whether to install or enable{" "}
|
||||||
|
<a href={process.env.REACT_APP_OPTIONSPAGE}>KISS Translator</a>{" "}
|
||||||
|
GreaseMonkey script?
|
||||||
|
</h2>
|
||||||
|
<h2>
|
||||||
|
or <a href={process.env.REACT_APP_HOMEPAGE}>click here</a> for help
|
||||||
|
</h2>
|
||||||
|
</center>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isGm && !ready) {
|
||||||
|
return (
|
||||||
|
<center>
|
||||||
|
<h2>loading...</h2>
|
||||||
|
</center>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StoragesProvider>
|
<StoragesProvider>
|
||||||
<ThemeProvider>
|
<ThemeProvider>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import {
|
|||||||
|
|
||||||
export default function Popup({ setShowPopup, translator: tran }) {
|
export default function Popup({ setShowPopup, translator: tran }) {
|
||||||
const i18n = useI18n();
|
const i18n = useI18n();
|
||||||
const [rule, setRule] = useState(tran.rule);
|
const [rule, setRule] = useState(tran?.rule);
|
||||||
|
|
||||||
const handleOpenSetting = () => {
|
const handleOpenSetting = () => {
|
||||||
if (isExt) {
|
if (isExt) {
|
||||||
|
|||||||
Reference in New Issue
Block a user