aboutsummaryrefslogtreecommitdiffstats
path: root/web_src/js/publicPath.js
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2019-11-17 22:39:06 +0100
committerLauris BH <lauris@nix.lv>2019-11-17 23:39:06 +0200
commitf8bd90ba60b0c362d3e39ddf702cac0e0df2b0ab (patch)
treebf0d009550720440d5e7db505b5dafec1450777e /web_src/js/publicPath.js
parent06984bbcbf43ca1ebb8ef8cee98553a41e3c2e0f (diff)
downloadgitea-f8bd90ba60b0c362d3e39ddf702cac0e0df2b0ab.tar.gz
gitea-f8bd90ba60b0c362d3e39ddf702cac0e0df2b0ab.zip
enable lazy-loading of gitgraph.js (#9036)
- moved gitgraph.js to web_src and made it importable and es6-compatible - created new webpack chunk for gitgraph - enabled CSS loader in webpack - enabled async/await syntax via regenerator-runtime - added script to ensure webpack chunks are loaded correctly - disable terser's comment extraction to prevent .LICENCE files gitgraph.js has many issues: 1. it is incompatible with ES6 because of strict-mode violations 1. it does not export anything 1. it's css has weird styles like for `body` 1. it is not available on npm I fixed points 1-3 in our version so it's now loadable in webpack. We should eventually consider alternatives.
Diffstat (limited to 'web_src/js/publicPath.js')
-rw-r--r--web_src/js/publicPath.js12
1 files changed, 12 insertions, 0 deletions
diff --git a/web_src/js/publicPath.js b/web_src/js/publicPath.js
new file mode 100644
index 0000000000..5d277e442a
--- /dev/null
+++ b/web_src/js/publicPath.js
@@ -0,0 +1,12 @@
+/* This sets up webpack's chunk loading to load resources from the same
+ directory where it loaded index.js from. This file must be imported
+ before any lazy-loading is being attempted. */
+
+if (document.currentScript && document.currentScript.src) {
+ const url = new URL(document.currentScript.src);
+ __webpack_public_path__ = `${url.pathname.replace(/\/[^/]*$/, '')}/`;
+} else {
+ // compat: IE11
+ const script = document.querySelector('script[src*="/index.js"]');
+ __webpack_public_path__ = `${script.getAttribute('src').replace(/\/[^/]*$/, '')}/`;
+}