@tanstack/solid-start
Version:
Modern and scalable routing for Solid applications
44 lines (43 loc) • 1.48 kB
JavaScript
import { solidStartDefaultEntryPaths } from "./shared.js";
import { START_ENVIRONMENT_NAMES, tanStackStartRsbuild } from "@tanstack/start-plugin-core";
//#region src/plugin/rsbuild.ts
function tanstackStart(options) {
const basePlugin = tanStackStartRsbuild({
framework: "solid",
defaultEntryPaths: solidStartDefaultEntryPaths,
providerEnvironmentName: START_ENVIRONMENT_NAMES.server,
ssrIsProvider: true,
rsbuild: { environments: { all: { resolve: { conditionNames: ["solid", "..."] } } } }
}, options);
return {
name: "tanstack-solid-start-rsbuild",
setup(api) {
basePlugin.setup(api);
api.modifyBundlerChain(async (chain, { CHAIN_ID, target }) => {
for (const ruleId of [
CHAIN_ID.RULE.JS,
CHAIN_ID.RULE.JS_DATA_URI,
"babel-js"
]) {
if (!chain.module.rules.has(ruleId)) continue;
const rule = chain.module.rule(ruleId);
if (!rule.uses.has(CHAIN_ID.USE.BABEL)) continue;
rule.use(CHAIN_ID.USE.BABEL).tap((babelOptions) => {
babelOptions.presets = (babelOptions.presets ?? []).map((preset) => {
if (Array.isArray(preset) && typeof preset[0] === "string" && preset[0].includes("babel-preset-solid")) return [preset[0], {
...preset[1] ?? {},
hydratable: true,
generate: target === "node" ? "ssr" : "dom"
}];
return preset;
});
return babelOptions;
});
}
});
}
};
}
//#endregion
export { tanstackStart };
//# sourceMappingURL=rsbuild.js.map