@redwoodjs/sdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
22 lines (21 loc) • 1.18 kB
JavaScript
import { resolve } from "node:path";
import { remove } from "fs-extra";
// port(justinvdm, 24 Mar 2025): Taken from vite to match how vite computes paths for optimized deps
// https://github.com/vitejs/vite/blob/d0d4c66bd539a5232005ac7ad63ec19f0794f2a5/packages/vite/src/node/utils.ts#L71
// https://github.com/vitejs/vite/blob/6e0e3c0b990f1132db923e4599e18b270baa3a93/packages/vite/src/node/optimizer/index.ts#L914-L921
const replaceSlashOrColonRE = /[/:]/g;
const replaceDotRE = /\./g;
const replaceNestedIdRE = /\s*>\s*/g;
const replaceHashRE = /#/g;
export const flattenId = (id) => id
.replace(replaceSlashOrColonRE, "_")
.replace(replaceDotRE, "__")
.replace(replaceNestedIdRE, "___")
.replace(replaceHashRE, "____");
export const invalidateViteDepsCacheEntry = async ({ projectRootDir, environment, entry, }) => {
const suffix = environment === "worker" ? "_worker" : "";
const viteDepsCachePath = resolve(projectRootDir, "node_modules", ".vite", `deps${suffix}`, `${flattenId(entry)}.js`);
console.log("Invalidating vite deps cache entry", viteDepsCachePath);
await remove(viteDepsCachePath);
await remove(`${viteDepsCachePath}.map`);
};