From b8bee7e970a199c1a664e41338be305c5deab308 Mon Sep 17 00:00:00 2001 From: Adam Blake Date: Fri, 1 Aug 2025 09:34:11 -0700 Subject: [PATCH] build: add script to patch API URL for runtime The application currently loads the API URL by trying a PageConfig option and then falling back to a localhost hardcoded URL. This yarn script uses `jq` to inject the environment variable API_URL into the built app's config at `dist/jupyter-lite.json`. Additionally, a yarn script `build:all:prod` tacks this script on at the end so that you can run API_URL=... jlpm build:all:prod --- .gitignore | 1 + package.json | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 50dedac2..188f24fd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ _output/ .jupyterlite.doit.db uv.lock +.envrc *.bundle.* lib/ diff --git a/package.json b/package.json index b70c5b60..68103fda 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "build:labextension": "jupyter labextension build .", "copy:landing:template": "cp templates/index.html dist/index.html", "patch:lab:index": "patch -p1 --forward < templates/customise-title-and-spinner.patch || patch -p1 -R --dry-run < templates/customise-title-and-spinner.patch", + "patch:config": "jq \".\\\"jupyter-config-data\\\".sharing_service_api_url = \\\"$API_URL\\\"\" dist/jupyter-lite.json > dist/jupyter-lite.tmp && mv dist/jupyter-lite.tmp dist/jupyter-lite.json", "copy:je-spinner-logo": "cp style/icons/logo.svg dist/lab/logo.svg", "copy:favicon": "cp static/favicon.ico dist/favicon.ico && cp static/favicon.ico dist/lab/favicon.ico", "build:landing:css": "esbuild style/landing.css --bundle --minify --loader:.svg=dataurl --outfile=dist/landing.css", @@ -43,6 +44,7 @@ "build:landing": "esbuild src/landing.tsx --bundle --outfile=dist/landing.js --minify --loader:.svg=dataurl --loader:.png=dataurl --loader:.jpeg=dataurl && jlpm copy:landing:template && jlpm patch:lab:index && jlpm copy:je-spinner-logo && jlpm build:css", "build:jupyterlite": "cd lite && jupyter lite build --XeusAddon.environment_file=xeus-environment.yml --output-dir=../dist && cd .. && jlpm build:landing && jlpm copy:favicon", "build:all": "jlpm build && jlpm build:jupyterlite", + "build:all:prod": "jlpm build:prod && jlpm build:jupyterlite && jlpm patch:config", "build:labextension:dev": "jupyter labextension build --development True .", "build:lib": "tsc --sourceMap", "build:lib:prod": "tsc",