@tanstack/solid-start
Version:
Modern and scalable routing for Solid applications
69 lines (68 loc) • 2.32 kB
JavaScript
import { solidStartDefaultEntryPaths } from "./shared.js";
import { START_ENVIRONMENT_NAMES, tanStackStartVite } from "@tanstack/start-plugin-core/vite";
//#region src/plugin/vite.ts
var SOLID_MANIFEST_ID = "virtual:solid-manifest";
var CLIENT_ASSETS_MANIFEST_STUB_RE = /solid-router\/(?:src|dist\/[^/]+)\/ssr\/clientAssetsManifest\.[cm]?[jt]sx?$/;
function tanstackStart(options) {
return [
{
name: "tanstack-solid-start:config",
config() {
return {
resolve: { dedupe: [
"solid-js",
"@solidjs/web",
"@solidjs/signals"
] },
ssr: { noExternal: [
"@tanstack/solid-router-ssr-query",
"@tanstack/solid-query",
"@tanstack/solid-query-devtools"
] }
};
},
configEnvironment(environmentName, options) {
return {
build: environmentName === START_ENVIRONMENT_NAMES.client ? { manifest: true } : void 0,
optimizeDeps: environmentName === START_ENVIRONMENT_NAMES.client || environmentName === START_ENVIRONMENT_NAMES.server && options.optimizeDeps?.noDiscovery === false ? { exclude: [
"@tanstack/solid-start",
"@tanstack/solid-router",
"@tanstack/start-static-server-functions"
] } : void 0
};
}
},
{
name: "tanstack-solid-start:client-assets-manifest",
async load(id) {
if (this.environment.name !== START_ENVIRONMENT_NAMES.server) return;
const cleanId = id.split("?")[0];
if (!CLIENT_ASSETS_MANIFEST_STUB_RE.test(cleanId)) return;
if (!await this.resolve(SOLID_MANIFEST_ID, id)) return;
return `import manifest from '${SOLID_MANIFEST_ID}'
const clientAssetsManifest =
manifest && typeof manifest === 'object' && typeof manifest.resolve !== 'function'
? Object.fromEntries(
Object.entries(manifest).map(([key, entry]) =>
entry && typeof entry === 'object' && entry.isEntry
? [key, { ...entry, isEntry: false }]
: [key, entry],
),
)
: manifest
export default clientAssetsManifest
`;
}
},
tanStackStartVite({
framework: "solid",
defaultEntryPaths: solidStartDefaultEntryPaths,
providerEnvironmentName: START_ENVIRONMENT_NAMES.server,
ssrIsProvider: true,
ssrResolverStrategy: { type: "default" }
}, options)
];
}
//#endregion
export { tanstackStart };
//# sourceMappingURL=vite.js.map