fully-react
Version:
React Server for Vite
48 lines (46 loc) • 1.17 kB
JavaScript
// src/server/webpack.ts
function dynamicImport(chunk) {
return import(
/* @vite-ignore */
chunk
);
}
function setupWebpackEnv(load = dynamicImport) {
const globalEnv = globalThis;
globalEnv.moduleCache = globalEnv.moduleCache ?? /* @__PURE__ */ new Map();
globalEnv.__webpack_chunk_load__ = async (chunk) => {
console.log("Loading chunk", chunk);
globalEnv.moduleCache.set(chunk, await load(chunk));
};
globalEnv.__webpack_require__ = (id) => {
console.log("Requiring chunk", id);
if (!globalEnv.moduleCache.has(id))
throw new Error(`Module ${id} not found`);
return globalEnv.moduleCache.get(id);
};
globalEnv.__webpack_chunk_get__ = async (id) => {
if (!globalEnv.moduleCache.has(id))
return await load(id);
return globalEnv.moduleCache.get(id);
};
return { load };
}
function createModuleMapProxy(resolve = (id) => id) {
return new Proxy(
{},
{
get(_, prop) {
const [id, name] = String(prop).split("#", 2);
return {
id,
chunks: [resolve(id)],
name
};
}
}
);
}
export {
setupWebpackEnv,
createModuleMapProxy
};