mirror of
https://github.com/ipnet-mesh/meshcore-hub.git
synced 2026-06-25 12:31:06 +02:00
4f202c068b
- Add Node.js 22 LTS frontend build stage (package.json, build.js) - Build Tailwind CSS v4 + DaisyUI v5 via CLI instead of runtime CDN - Vendor lit-html, Leaflet, Chart.js, QRCode.js locally - Update Dockerfile with multi-stage Node.js frontend build - Migrate all DaisyUI v4 CSS variables to v5 syntax in app.css - Fix dashboard grid layout (static class names for Tailwind JIT) - Fix map popup transparent background (v5 variable rename) - Fix leaflet.js.map 404 (include source maps in vendor copy) - Fix custom page button contrast (remove btn-neutral) - Replace table-compact with table-sm (DaisyUI v5 rename)
60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
import { execSync } from "node:child_process";
|
|
import { cpSync, mkdirSync, existsSync } from "node:fs";
|
|
import { join } from "node:path";
|
|
|
|
const STATIC = join("src", "meshcore_hub", "web", "static");
|
|
const VENDOR = join(STATIC, "vendor");
|
|
|
|
function vendor(pkg, files, dest) {
|
|
const out = join(VENDOR, dest);
|
|
mkdirSync(out, { recursive: true });
|
|
for (const f of files) {
|
|
const src = join("node_modules", pkg, f);
|
|
if (!existsSync(src)) {
|
|
console.error(` MISSING: ${src}`);
|
|
process.exit(1);
|
|
}
|
|
cpSync(src, join(out, f.split("/").pop()), { recursive: true });
|
|
}
|
|
}
|
|
|
|
console.log("Building Tailwind CSS...");
|
|
execSync(
|
|
`npx @tailwindcss/cli build --input ${join(STATIC, "css", "input.css")} --output ${join(STATIC, "css", "tailwind.css")} --minify`,
|
|
{ stdio: "inherit" },
|
|
);
|
|
|
|
console.log("Copying vendor files...");
|
|
|
|
vendor("lit-html", ["lit-html.js", "lit-html.js.map"], "lit-html");
|
|
vendor(
|
|
"lit-html",
|
|
[
|
|
"directive.js",
|
|
"directive.js.map",
|
|
"directive-helpers.js",
|
|
"directive-helpers.js.map",
|
|
"async-directive.js",
|
|
"async-directive.js.map",
|
|
],
|
|
"lit-html",
|
|
);
|
|
vendor(
|
|
"lit-html",
|
|
["directives/unsafe-html.js", "directives/unsafe-html.js.map"],
|
|
"lit-html/directives",
|
|
);
|
|
|
|
vendor("leaflet", ["dist/leaflet.css", "dist/leaflet.js", "dist/leaflet.js.map"], "leaflet");
|
|
mkdirSync(join(VENDOR, "leaflet", "images"), { recursive: true });
|
|
cpSync(
|
|
join("node_modules", "leaflet", "dist", "images"),
|
|
join(VENDOR, "leaflet", "images"),
|
|
{ recursive: true },
|
|
);
|
|
|
|
vendor("chart.js", ["dist/chart.umd.min.js"], "chart.js");
|
|
vendor("qrcodejs", ["qrcode.min.js"], "qrcodejs");
|
|
|
|
console.log("Done.");
|