vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
55 lines (52 loc) • 1.92 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { join } from 'node:path';
import { createInputNormalizer } from '../helpers/inputNormalizer.js';
function createBuildLoader({
root,
userConfig: _userConfig,
userOptions,
pluginContext: _pluginContext,
serverManifest,
clientManifest
}) {
const normalizer = createInputNormalizer({
root,
preserveModulesRoot: userOptions.build.preserveModulesRoot === true ? userOptions.moduleBase : undefined,
removeExtension: true
});
return async function buildLoader(id) {
const [key, value] = normalizer(id);
if (value !== id) {
console.warn(`[vite-plugin-react-server] Mismatch in build loader for ${id} !== ${value} (${key})`);
}
const distDir = userOptions.build.outDir;
const manifests = [clientManifest, serverManifest];
for (const n of [0, 1]) {
const manifest = manifests[n];
const manifestEntry = manifest[value];
if (!manifestEntry) {
continue;
}
const isClient = userOptions.autoDiscover.clientComponents(id);
const isServer = userOptions.autoDiscover.serverFunctions(id);
const outDir = isClient ? userOptions.build.client : isServer ? userOptions.build.server : n === 0 ? userOptions.build.client : userOptions.build.server;
if (manifestEntry.file.startsWith(`${root}/${distDir}/${outDir}/`)) {
return import(manifestEntry.file);
}
if (manifestEntry.file.startsWith(`${distDir}/`)) {
return import(join(root, manifestEntry.file));
}
if (manifestEntry.file.startsWith(`${outDir}/`)) {
return import(join(root, distDir, outDir, manifestEntry.file));
}
return import(join(root, distDir, outDir, manifestEntry.file));
}
throw new Error(`Module not found: ${id}`);
};
}
export { createBuildLoader };
//# sourceMappingURL=createBuildLoader.js.map