Skip to content

Commit e6d7ac5

Browse files
Builder-Vite: Fix missing source map warning
1 parent 1ebcb33 commit e6d7ac5

File tree

5 files changed

+26
-12
lines changed

5 files changed

+26
-12
lines changed

code/builders/builder-vite/src/codegen-modern-iframe-script.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { getFrameworkName, loadPreviewOrConfigFile } from 'storybook/internal/co
22
import type { Options, PreviewAnnotation } from 'storybook/internal/types';
33

44
import { processPreviewAnnotation } from './utils/process-preview-annotation';
5+
import { getResolvedVirtualModuleId } from './utils/virtual-module';
56
import { virtualAddonSetupFile, virtualStoriesFile } from './virtual-file-names';
67

78
export async function generateModernIframeScriptCode(options: Options, projectRoot: string) {
@@ -45,7 +46,7 @@ export async function generateModernIframeScriptCode(options: Options, projectRo
4546

4647
return `
4748
if (import.meta.hot) {
48-
import.meta.hot.accept('${virtualStoriesFile}', (newModule) => {
49+
import.meta.hot.accept('${getResolvedVirtualModuleId(virtualStoriesFile)}', (newModule) => {
4950
// importFn has changed so we need to patch the new one in
5051
window.__STORYBOOK_PREVIEW__.onStoriesChanged({ importFn: newModule.importFn });
5152
});

code/builders/builder-vite/src/plugins/code-generator-plugin.ts

+14-9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { generateImportFnScriptCode } from '../codegen-importfn-script';
88
import { generateModernIframeScriptCode } from '../codegen-modern-iframe-script';
99
import { generateAddonSetupCode } from '../codegen-set-addon-channel';
1010
import { transformIframeHtml } from '../transform-iframe-html';
11+
import { getResolvedVirtualModuleId } from '../utils/virtual-module';
1112
import {
1213
virtualAddonSetupFile,
1314
virtualFileId,
@@ -28,11 +29,15 @@ export function codeGeneratorPlugin(options: Options): Plugin {
2829
// invalidate the whole vite-app.js script on every file change.
2930
// (this might be a little too aggressive?)
3031
server.watcher.on('change', () => {
31-
const appModule = server.moduleGraph.getModuleById(virtualFileId);
32+
const appModule = server.moduleGraph.getModuleById(
33+
getResolvedVirtualModuleId(virtualFileId)
34+
);
3235
if (appModule) {
3336
server.moduleGraph.invalidateModule(appModule);
3437
}
35-
const storiesModule = server.moduleGraph.getModuleById(virtualStoriesFile);
38+
const storiesModule = server.moduleGraph.getModuleById(
39+
getResolvedVirtualModuleId(virtualStoriesFile)
40+
);
3641
if (storiesModule) {
3742
server.moduleGraph.invalidateModule(storiesModule);
3843
}
@@ -70,33 +75,33 @@ export function codeGeneratorPlugin(options: Options): Plugin {
7075
},
7176
resolveId(source) {
7277
if (source === virtualFileId) {
73-
return `${virtualFileId}`;
78+
return getResolvedVirtualModuleId(virtualFileId);
7479
}
7580
if (source === iframePath) {
7681
return iframeId;
7782
}
7883
if (source === virtualStoriesFile) {
79-
return `${virtualStoriesFile}`;
84+
return getResolvedVirtualModuleId(virtualStoriesFile);
8085
}
8186
if (source === virtualPreviewFile) {
82-
return virtualPreviewFile;
87+
return getResolvedVirtualModuleId(virtualPreviewFile);
8388
}
8489
if (source === virtualAddonSetupFile) {
85-
return `${virtualAddonSetupFile}`;
90+
return getResolvedVirtualModuleId(virtualAddonSetupFile);
8691
}
8792

8893
return undefined;
8994
},
9095
async load(id, config) {
91-
if (id === `${virtualStoriesFile}`) {
96+
if (id === getResolvedVirtualModuleId(virtualStoriesFile)) {
9297
return generateImportFnScriptCode(options);
9398
}
9499

95-
if (id === `${virtualAddonSetupFile}`) {
100+
if (id === getResolvedVirtualModuleId(virtualAddonSetupFile)) {
96101
return generateAddonSetupCode();
97102
}
98103

99-
if (id === `${virtualFileId}`) {
104+
if (id === getResolvedVirtualModuleId(virtualFileId)) {
100105
return generateModernIframeScriptCode(options, projectRoot);
101106
}
102107

code/builders/builder-vite/src/plugins/webpack-stats-plugin.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import type { BuilderStats } from 'storybook/internal/types';
66
import slash from 'slash';
77
import type { Plugin } from 'vite';
88

9+
import { getResolvedVirtualModuleId } from '../utils/virtual-module';
10+
911
/*
1012
* Reason, Module are copied from chromatic types
1113
* https://github.com/chromaui/chromatic-cli/blob/145a5e295dde21042e96396c7e004f250d842182/bin-src/types.ts#L265-L276
@@ -50,7 +52,10 @@ export function pluginWebpackStats({ workingDir }: WebpackStatsPluginOptions): W
5052
/** Convert an absolute path name to a path relative to the vite root, with a starting `./` */
5153
function normalize(filename: string) {
5254
// Do not try to resolve virtual files
53-
if (filename.startsWith('/virtual:')) {
55+
if (
56+
filename.startsWith('/virtual:') ||
57+
filename.startsWith(getResolvedVirtualModuleId('/virtual:'))
58+
) {
5459
return filename;
5560
}
5661
// Otherwise, we need them in the format `./path/to/file.js`.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function getResolvedVirtualModuleId(virtualModuleId: string) {
2+
return `\0${virtualModuleId}`;
3+
}

code/frameworks/vue3-vite/src/plugins/vue-component-meta.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export async function vueComponentMeta(tsconfigPath = 'tsconfig.json'): Promise<
2626

2727
// exclude stories, virtual modules and storybook internals
2828
const exclude =
29-
/\.stories\.(ts|tsx|js|jsx)$|^\/virtual:|^\/sb-preview\/|\.storybook\/.*\.(ts|js)$/;
29+
/\.stories\.(ts|tsx|js|jsx)$|^\0\/virtual:|^\/virtual:|^\/sb-preview\/|\.storybook\/.*\.(ts|js)$/;
3030
const include = /\.(vue|ts|js|tsx|jsx)$/;
3131
const filter = createFilter(include, exclude);
3232

0 commit comments

Comments
 (0)