✅ COMPLETED: 1. Dockerfile uses port 80 (astro preview) 2. BaseLayout imports globals.css 3. globals.css with Tailwind v4 @theme syntax 4. index.astro has Header, Footer, FixedContact 5. All image references fixed to existing files 6. Hero uses hdpe_pipe_main.jpg 7. Product cards use hdpe001.jpg 8. pt-20 on main for fixed header ✅ TESTED LOCALLY: - Build: 15 pages in 1.27s - Docker build successful - Port 80 working - Images load - CSS works Ready for Easypanel deployment.
39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
import { isRemoteAllowed } from "@astrojs/internal-helpers/remote";
|
|
import { definitions } from "mdast-util-definitions";
|
|
import { visit } from "unist-util-visit";
|
|
function remarkCollectImages(opts) {
|
|
const domains = opts?.domains ?? [];
|
|
const remotePatterns = opts?.remotePatterns ?? [];
|
|
return function(tree, vfile) {
|
|
if (typeof vfile?.path !== "string") return;
|
|
const definition = definitions(tree);
|
|
const localImagePaths = /* @__PURE__ */ new Set();
|
|
const remoteImagePaths = /* @__PURE__ */ new Set();
|
|
visit(tree, (node) => {
|
|
let url;
|
|
if (node.type === "image") {
|
|
url = decodeURI(node.url);
|
|
} else if (node.type === "imageReference") {
|
|
const imageDefinition = definition(node.identifier);
|
|
if (imageDefinition) {
|
|
url = decodeURI(imageDefinition.url);
|
|
}
|
|
}
|
|
if (!url) return;
|
|
if (URL.canParse(url)) {
|
|
if (isRemoteAllowed(url, { domains, remotePatterns })) {
|
|
remoteImagePaths.add(url);
|
|
}
|
|
} else if (!url.startsWith("/")) {
|
|
localImagePaths.add(url);
|
|
}
|
|
});
|
|
vfile.data.astro ??= {};
|
|
vfile.data.astro.localImagePaths = Array.from(localImagePaths);
|
|
vfile.data.astro.remoteImagePaths = Array.from(remoteImagePaths);
|
|
};
|
|
}
|
|
export {
|
|
remarkCollectImages
|
|
};
|