UNPKG

@tanstack/router-plugin

Version:

Modern and scalable routing for React applications

54 lines (53 loc) 2.09 kB
import { unpluginRouterCodeSplitterFactory } from "./router-code-splitter-plugin.js"; import { unpluginRouterGeneratorFactory } from "./router-generator-plugin.js"; import { unpluginRouterHmrFactory } from "./router-hmr-plugin.js"; import { getConfig } from "@tanstack/router-generator"; //#region src/core/router-composed-plugin.ts var INLINE_CSS_DEFAULT_DEFINES = { "process.env.TSS_INLINE_CSS_ENABLED": JSON.stringify("false"), "import.meta.env.TSS_INLINE_CSS_ENABLED": JSON.stringify("false") }; function applyWebpackInlineCssDefaultDefinePlugin(compiler) { new compiler.webpack.DefinePlugin(INLINE_CSS_DEFAULT_DEFINES).apply(compiler); } function applyRspackInlineCssDefaultDefinePlugin(compiler) { new compiler.webpack.DefinePlugin(INLINE_CSS_DEFAULT_DEFINES).apply(compiler); } var unpluginRouterComposedFactory = (options = {}, meta) => { const ROOT = process.cwd(); const userConfig = getConfig(typeof options === "function" ? options() : options, ROOT); const getPlugin = (pluginFactory) => { const plugin = pluginFactory(options, meta); if (!Array.isArray(plugin)) return [plugin]; return plugin; }; const routerGenerator = getPlugin(unpluginRouterGeneratorFactory); const routerCodeSplitter = getPlugin(unpluginRouterCodeSplitterFactory); const result = [{ name: "tanstack:router-inline-css-defaults", vite: { config() { return { define: { ...INLINE_CSS_DEFAULT_DEFINES } }; } }, webpack(compiler) { applyWebpackInlineCssDefaultDefinePlugin(compiler); }, rspack(compiler) { applyRspackInlineCssDefaultDefinePlugin(compiler); }, esbuild: { config(options) { options.define = { ...INLINE_CSS_DEFAULT_DEFINES, ...options.define }; } } }, ...routerGenerator]; if (userConfig.autoCodeSplitting) result.push(...routerCodeSplitter); if (!(process.env.NODE_ENV === "production") && !userConfig.autoCodeSplitting) { const routerHmr = getPlugin(unpluginRouterHmrFactory); result.push(...routerHmr); } return result; }; //#endregion export { unpluginRouterComposedFactory }; //# sourceMappingURL=router-composed-plugin.js.map