From 5d00ff40f3e6f16a581b7680dfcd8e14c14142ab Mon Sep 17 00:00:00 2001 From: Ian Eaves Date: Fri, 21 Nov 2025 22:39:20 -0600 Subject: [PATCH] prep for docs link Signed-off-by: Ian Eaves --- dist/index.html | 4 ++-- package-lock.json | 53 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 ++ public/docs/.gitkeep | 0 src/Nav.jsx | 3 +++ vite.config.js | 34 ++++++++++++++++++++++++++-- 6 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 public/docs/.gitkeep diff --git a/dist/index.html b/dist/index.html index ccec279b..5ff236f8 100644 --- a/dist/index.html +++ b/dist/index.html @@ -9,8 +9,8 @@ RamaLama - - + +
diff --git a/package-lock.json b/package-lock.json index 1fedba34..32d7c820 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "eslint-plugin-react-refresh": "^0.4.24", "gh-pages": "^6.3.0", "globals": "^16.4.0", + "sirv": "^3.0.2", "vite": "^7.1.12" } }, @@ -56,6 +57,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1043,6 +1045,13 @@ "node": ">= 8" } }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.43", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.43.tgz", @@ -1395,6 +1404,7 @@ "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -1436,6 +1446,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1723,6 +1734,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001735", "electron-to-chromium": "^1.5.204", @@ -2318,6 +2330,7 @@ "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -3754,6 +3767,16 @@ "node": "*" } }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -4216,6 +4239,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -4613,6 +4637,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4834,6 +4873,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -4854,6 +4894,16 @@ "node": ">=8.0" } }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -5044,6 +5094,7 @@ "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -5137,6 +5188,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -5284,6 +5336,7 @@ "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 1524ea7a..1be53c55 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "scripts": { "dev": "vite", "build": "vite build", + "postbuild": "cp -R public/docs dist/docs", "lint": "eslint .", "preview": "vite preview", "predeploy": "npm run build", @@ -27,6 +28,7 @@ "eslint-plugin-react-refresh": "^0.4.24", "gh-pages": "^6.3.0", "globals": "^16.4.0", + "sirv": "^3.0.2", "vite": "^7.1.12" } } diff --git a/public/docs/.gitkeep b/public/docs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/src/Nav.jsx b/src/Nav.jsx index 39b3cc28..1ffca589 100644 --- a/src/Nav.jsx +++ b/src/Nav.jsx @@ -23,6 +23,9 @@ const Navbar = () => {
  • About
  • +
  • + Docs +
  • Presentations
  • diff --git a/vite.config.js b/vite.config.js index 40c413ec..e432c9c6 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,8 +1,38 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' +import sirv from 'sirv' +import { fileURLToPath } from 'url' +import { dirname, resolve } from 'path' + +const __filename = fileURLToPath(import.meta.url) +const __dirname = dirname(__filename) +const docsDir = resolve(__dirname, 'public/docs') + +const serveDocsPlugin = () => ({ + name: 'serve-public-docs', + configureServer(server) { + const serve = sirv(docsDir, { dev: true }) + + server.middlewares.use((req, res, next) => { + const url = req.url + if (!url || !url.startsWith('/docs')) { + return next() + } + + const parsedUrl = new URL(url, 'http://localhost') + const strippedPath = parsedUrl.pathname.slice('/docs'.length) || '/' + req.url = `${strippedPath}${parsedUrl.search}` + + serve(req, res, (err) => { + req.url = url + next(err) + }) + }) + }, +}) export default defineConfig({ - plugins: [react()], + plugins: [react(), serveDocsPlugin()], homepage: "https://github.com/containers/ramalama.github.io", base: '', -}) \ No newline at end of file +})