rwsdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
32 lines (31 loc) • 1.39 kB
JavaScript
import debug from "debug";
import { normalizeModulePath } from "../lib/normalizeModulePath.mjs";
const log = debug("rwsdk:vite:directives-filtering-plugin");
export const directivesFilteringPlugin = ({ clientFiles, serverFiles, projectRootDir, }) => {
return {
name: "rwsdk:directives-filtering",
enforce: "post",
async buildEnd() {
if (this.environment.name !== "worker" ||
process.env.RWSDK_BUILD_PASS !== "worker") {
return;
}
log("Filtering directive modules after worker build...");
process.env.VERBOSE &&
log("Directive modules before filtering: client=%O, server=%O", Array.from(clientFiles), Array.from(serverFiles));
[clientFiles, serverFiles].forEach((files) => {
for (const id of files) {
const absoluteId = normalizeModulePath(id, projectRootDir, {
absolute: true,
});
const info = this.getModuleInfo(absoluteId);
if (!info?.isIncluded) {
files.delete(id);
}
}
});
process.env.VERBOSE &&
log("Client/server files after filtering: client=%O, server=%O", Array.from(clientFiles), Array.from(serverFiles));
},
};
};