Story: fix Vite bundling

This commit is contained in:
Fuma Nama
2026-01-25 20:25:33 +08:00
parent 3cf7f59972
commit eff883e607
8 changed files with 57 additions and 81 deletions
@@ -10,6 +10,8 @@ Hey there! Fumadocs is the docs framework that also works on Tanstack Start!
## Heading
<StoryWithControl name="callout" />
Hello World!
<Cards>
@@ -17,8 +19,6 @@ Hello World!
<Card title="Learn more about Fumadocs" href="https://fumadocs.dev" />
</Cards>
<StoryWithControl name="callout" />
### CodeBlock
```ts
+2 -1
View File
@@ -6,7 +6,7 @@
"scripts": {
"dev": "vite dev",
"build": "vite build",
"start": "node .output/server/index.mjs",
"start": "vite preview",
"types:check": "fumadocs-mdx && tsc --noEmit"
},
"dependencies": {
@@ -21,6 +21,7 @@
"react": "^19.2.3",
"react-dom": "^19.2.3",
"tailwind-merge": "^3.4.0",
"ts-morph": "^27.0.2",
"vite": "^7.3.1"
},
"devDependencies": {
@@ -1,7 +1,7 @@
import { defineStory } from "@/lib/story";
import type { CalloutStory } from ".";
export const story = defineStory<typeof CalloutStory>(import.meta.url, {
export const story = defineStory<typeof CalloutStory>("src/components/callout/story.tsx", {
displayName: "Callout",
args: [
{
@@ -1,9 +1,5 @@
import { createFileSystemCache, defineStoryFactory } from "@fumadocs/story";
export const { defineStory, getStoryPayloads } = defineStoryFactory({
// use only on Vercel
cache:
process.env.NODE_ENV === "production"
? createFileSystemCache(".tanstack/fumadocs-story")
: undefined,
cache: process.env.NODE_ENV === "production" && createFileSystemCache(".tanstack/tmp/story"),
});
+11 -8
View File
@@ -1,19 +1,22 @@
import react from '@vitejs/plugin-react';
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
import { defineConfig } from 'vite';
import tsConfigPaths from 'vite-tsconfig-paths';
import tailwindcss from '@tailwindcss/vite';
import mdx from 'fumadocs-mdx/vite';
import react from "@vitejs/plugin-react";
import { tanstackStart } from "@tanstack/react-start/plugin/vite";
import { defineConfig } from "vite";
import tsConfigPaths from "vite-tsconfig-paths";
import tailwindcss from "@tailwindcss/vite";
import mdx from "fumadocs-mdx/vite";
export default defineConfig({
server: {
port: 3000,
},
resolve: {
external: ["typescript", "ts-morph"],
},
plugins: [
mdx(await import('./source.config')),
mdx(await import("./source.config")),
tailwindcss(),
tsConfigPaths({
projects: ['./tsconfig.json'],
projects: ["./tsconfig.json"],
}),
tanstackStart({
prerender: {
+9 -5
View File
@@ -89,7 +89,7 @@ export interface StoryFactoryOptions {
}
export interface StoryFactory {
defineStory: <C extends FC<any>>(callerUrl: string, options: StoryOptions<C>) => Story<C>;
defineStory: <C extends FC<any>>(urlOrPath: URL | string, options: StoryOptions<C>) => Story<C>;
getStoryPayloads: <Stories extends Record<string, Story>>(
stories: Stories,
) => Promise<Record<keyof Stories, string>>;
@@ -126,8 +126,9 @@ export function defineStoryFactory(factoryOptions: StoryFactoryOptions = {}): St
const sourceFile = project.createSourceFile(filePath, `${fileContent}\n${injection}`, {
overwrite: true,
});
const declaration = sourceFile.getExportedDeclarations().get("_StoryProps_")?.[0];
if (!declaration) {
const declarations = sourceFile.getExportedDeclarations();
const declaration = declarations.get("_StoryProps_")?.[0];
if (!declarations.has(name) || !declaration) {
throw new Error(`Export "${name}" not found in file "${filePath}"`);
}
@@ -139,8 +140,11 @@ export function defineStoryFactory(factoryOptions: StoryFactoryOptions = {}): St
}
return {
defineStory(callerUrl, { Component, name = "story", displayName, args = {} }) {
const filePath = fileURLToPath(callerUrl);
defineStory(urlOrPath, { Component, name = "story", displayName, args = {} }) {
const filePath =
urlOrPath instanceof URL || urlOrPath.startsWith("file:///")
? fileURLToPath(urlOrPath)
: urlOrPath;
async function getClientPayload(): Promise<ClientPayload> {
const normalized = Array.isArray(args) ? args : [{ ...args, variant: "default" }];
+2 -2
View File
@@ -1,5 +1,5 @@
import { createHash } from 'node:crypto';
import { createHash } from "node:crypto";
export function getHash(v: string) {
return createHash('MD5').update(v).digest('hex').slice(0, 12);
return createHash("SHA-256").update(v).digest("hex").slice(0, 32);
}
+29 -57
View File
@@ -354,7 +354,7 @@ importers:
version: link:../../packages/radix-ui
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -370,7 +370,7 @@ importers:
version: 0.2.2(@content-collections/[email protected]([email protected]))([email protected]([email protected]))([email protected])
'@content-collections/next':
specifier: ^0.2.10
version: 0.2.10(@content-collections/[email protected]([email protected]))([email protected](@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected]))
version: 0.2.10(@content-collections/[email protected]([email protected]))([email protected](@babel/[email protected].6)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected]))
'@types/mdx':
specifier: ^2.0.13
version: 2.0.13
@@ -458,7 +458,7 @@ importers:
version: link:../../packages/radix-ui
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -495,7 +495,7 @@ importers:
version: 5.2.12(@types/[email protected])([email protected])
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -544,7 +544,7 @@ importers:
version: 0.563.0([email protected])
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -593,7 +593,7 @@ importers:
version: link:../../packages/radix-ui
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -642,7 +642,7 @@ importers:
version: 0.563.0([email protected])
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -694,7 +694,7 @@ importers:
version: link:../../packages/radix-ui
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -740,7 +740,7 @@ importers:
version: link:../../packages/radix-ui
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -792,7 +792,7 @@ importers:
version: link:../../packages/radix-ui
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -1006,7 +1006,7 @@ importers:
version: 19.2.3(@types/[email protected])
'@vitejs/plugin-rsc':
specifier: ^0.5.16
version: 0.5.16([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
version: 0.5.16([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
react-router-devtools:
specifier: ^6.2.0
version: 6.2.0(@types/[email protected](@types/[email protected]))(@types/[email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
@@ -1103,7 +1103,7 @@ importers:
version: link:../../packages/radix-ui
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -1366,6 +1366,9 @@ importers:
tailwind-merge:
specifier: ^3.4.0
version: 3.4.0
ts-morph:
specifier: ^27.0.2
version: 27.0.2
vite:
specifier: ^7.3.1
version: 7.3.1(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
@@ -1527,7 +1530,7 @@ importers:
version: 0.563.0([email protected])
next:
specifier: 16.x.x
version: 16.1.1(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.1(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
next-themes:
specifier: ^0.4.6
version: 0.4.6([email protected]([email protected]))([email protected])
@@ -1774,7 +1777,7 @@ importers:
version: 2.0.1
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react-router:
specifier: ^7.13.0
version: 7.13.0([email protected]([email protected]))([email protected])
@@ -2034,7 +2037,7 @@ importers:
version: 3.2.0
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
react:
specifier: ^19.2.3
version: 19.2.3
@@ -2316,7 +2319,7 @@ importers:
version: 5.1.2([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
'@vitejs/plugin-rsc':
specifier: ^0.5.16
version: 0.5.16([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
version: 0.5.16([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
commander:
specifier: ^14.0.2
version: 14.0.2
@@ -2462,7 +2465,7 @@ importers:
version: 0.563.0([email protected])
next:
specifier: 16.x.x
version: 16.1.1(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.1(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
next-themes:
specifier: ^0.4.6
version: 0.4.6([email protected]([email protected]))([email protected])
@@ -2776,7 +2779,7 @@ importers:
version: 4.6.2
next:
specifier: 16.1.4
version: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
version: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
tailwindcss:
specifier: ^4.1.18
version: 4.1.18
@@ -7222,6 +7225,7 @@ packages:
[email protected]:
resolution: {integrity: sha512-Tn98GlZVN2WM7+lg/uGn5DzUao37Yc0PUz7yzYHdeF5hd+SmHQGbCUIKE4Sspdgtxn49LunK3mDNBC2Qn6GJjw==}
cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true
@@ -12876,11 +12880,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@content-collections/[email protected](@content-collections/[email protected]([email protected]))([email protected](@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected]))':
'@content-collections/[email protected](@content-collections/[email protected]([email protected]))([email protected](@babel/[email protected].6)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected]))':
dependencies:
'@content-collections/core': 0.13.1([email protected])
'@content-collections/integrations': 0.4.0(@content-collections/[email protected]([email protected]))
next: 16.1.4(@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
next: 16.1.4(@babel/[email protected].6)(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected])
'@dimforge/[email protected]': {}
@@ -14619,7 +14623,7 @@ snapshots:
vite-node: 3.2.4(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
optionalDependencies:
'@react-router/serve': 7.13.0([email protected]([email protected]([email protected]))([email protected]))([email protected])
'@vitejs/plugin-rsc': 0.5.16([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
'@vitejs/plugin-rsc': 0.5.16([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
react-server-dom-webpack: 19.2.3([email protected]([email protected]))([email protected])([email protected])
typescript: 5.9.3
transitivePeerDependencies:
@@ -16188,7 +16192,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))':
'@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))':
dependencies:
es-module-lexer: 2.0.0
estree-walker: 3.0.3
@@ -19950,7 +19954,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
[email protected](@babel/[email protected].5)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected]):
[email protected](@babel/[email protected].6)(@opentelemetry/[email protected])([email protected]([email protected]))([email protected]):
dependencies:
'@next/env': 16.1.1
'@swc/helpers': 0.5.15
@@ -19959,7 +19963,7 @@ snapshots:
postcss: 8.4.31
react: 19.2.3
react-dom: 19.2.3([email protected])
styled-jsx: 5.1.6(@babel/[email protected].5)([email protected])
styled-jsx: 5.1.6(@babel/[email protected].6)([email protected])([email protected])
optionalDependencies:
'@next/swc-darwin-arm64': 16.1.1
'@next/swc-darwin-x64': 16.1.1
@@ -19975,31 +19979,6 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
[email protected](@babel/[email protected])(@opentelemetry/[email protected])([email protected]([email protected]))([email protected]):
dependencies:
'@next/env': 16.1.4
'@swc/helpers': 0.5.15
baseline-browser-mapping: 2.9.17
caniuse-lite: 1.0.30001765
postcss: 8.4.31
react: 19.2.3
react-dom: 19.2.3([email protected])
styled-jsx: 5.1.6(@babel/[email protected])([email protected])
optionalDependencies:
'@next/swc-darwin-arm64': 16.1.4
'@next/swc-darwin-x64': 16.1.4
'@next/swc-linux-arm64-gnu': 16.1.4
'@next/swc-linux-arm64-musl': 16.1.4
'@next/swc-linux-x64-gnu': 16.1.4
'@next/swc-linux-x64-musl': 16.1.4
'@next/swc-win32-arm64-msvc': 16.1.4
'@next/swc-win32-x64-msvc': 16.1.4
'@opentelemetry/api': 1.9.0
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
[email protected](@babel/[email protected])(@opentelemetry/[email protected])([email protected])([email protected]([email protected]))([email protected]):
dependencies:
'@next/env': 16.1.4
@@ -21647,13 +21626,6 @@ snapshots:
dependencies:
inline-style-parser: 0.2.7
[email protected](@babel/[email protected])([email protected]):
dependencies:
client-only: 0.0.1
react: 19.2.3
optionalDependencies:
'@babel/core': 7.28.5
[email protected](@babel/[email protected])([email protected])([email protected]):
dependencies:
client-only: 0.0.1
@@ -22322,7 +22294,7 @@ snapshots:
dependencies:
'@hono/node-server': 1.19.9([email protected])
'@vitejs/plugin-react': 5.1.2([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
'@vitejs/plugin-rsc': 0.5.16([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
'@vitejs/plugin-rsc': 0.5.16([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
dotenv: 17.2.3
hono: 4.11.5
magic-string: 0.30.21