feat: preload images
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import * as esbuild from "esbuild";
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
|
||||
const filesToCopy = [
|
||||
"node_modules/htmx.org/dist/htmx.min.js",
|
||||
"node_modules/htmx-ext-preload/dist/preload.min.js",
|
||||
"node_modules/htmx-ext-head-support/dist/head-support.min.js",
|
||||
];
|
||||
|
||||
const filesToMinifyRoot = "web/src/js";
|
||||
|
||||
const outputRoot = "web/static/js";
|
||||
|
||||
async function minifyFiles() {
|
||||
try {
|
||||
const files = (await fs.readdir(filesToMinifyRoot))
|
||||
.filter((p) => p.endsWith(".js"))
|
||||
.map((p) => {
|
||||
return {
|
||||
src: path.join(filesToMinifyRoot, p),
|
||||
dest: path.join(outputRoot, p.substring(0, p.length - 3) + ".min.js"),
|
||||
};
|
||||
});
|
||||
|
||||
for (const file of files) {
|
||||
await esbuild.build({
|
||||
entryPoints: [file.src],
|
||||
bundle: false,
|
||||
minify: true,
|
||||
outfile: file.dest,
|
||||
});
|
||||
console.log(`Minified ${file.src} to ${file.dest}`);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("could not minify files", err);
|
||||
}
|
||||
}
|
||||
|
||||
async function coppyFromNodemodules() {
|
||||
try {
|
||||
const fileMap = filesToCopy.map((file) => {
|
||||
return {
|
||||
src: file,
|
||||
dest: path.join(outputRoot, path.basename(file)),
|
||||
};
|
||||
});
|
||||
|
||||
for (const file of fileMap) {
|
||||
await fs.copyFile(file.src, file.dest);
|
||||
console.log(`Copied ${path.basename(file.dest)}`);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("JS build failed:", err);
|
||||
process.exit(2);
|
||||
}
|
||||
}
|
||||
|
||||
async function build() {
|
||||
console.log("Starting JS build...");
|
||||
|
||||
await minifyFiles();
|
||||
await coppyFromNodemodules();
|
||||
|
||||
console.log("JS build complete!");
|
||||
}
|
||||
|
||||
build();
|
||||
|
||||
Reference in New Issue
Block a user