Skip to content

Commit 58f0681

Browse files
committed
Step 2 - Cretae patch-vate-dev-server
1 parent 20ffd26 commit 58f0681

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import {
2+
// @ts-ignore
3+
createServer as createServerVite,
4+
// @ts-ignore
5+
InlineConfig,
6+
// @ts-ignore
7+
Plugin,
8+
// @ts-ignore
9+
normalizePath as normalizePathVite,
10+
// @ts-ignore
11+
ViteDevServer,
12+
// @ts-ignore
13+
PreviewServer,
14+
// @ts-ignore
15+
ResolvedConfig,
16+
// @ts-ignore
17+
} from 'vite';
18+
19+
export const PREF = 'http://';
20+
const external = [];
21+
22+
export let serverFromPatch: ViteDevServer;
23+
24+
function createServer(inlineConfig: InlineConfig) {
25+
if (
26+
inlineConfig.optimizeDeps &&
27+
Array.isArray(inlineConfig.optimizeDeps.exclude)
28+
) {
29+
external.push(...inlineConfig.optimizeDeps.exclude);
30+
}
31+
inlineConfig.plugins = [customNodeImportPlugin(), ...inlineConfig.plugins];
32+
33+
return createServerVite(inlineConfig).then((server) => {
34+
serverFromPatch = server;
35+
return server;
36+
});
37+
}
38+
39+
function normalizePath(path: string) {
40+
return normalizePathVite(path);
41+
}
42+
43+
function customNodeImportPlugin(): Plugin {
44+
return {
45+
enforce: 'pre',
46+
name: 'vite:custom-node-import',
47+
async resolveId(source, importer, options) {},
48+
async configResolved(config: ResolvedConfig) {},
49+
async load(id) {},
50+
async transform(code, id) {
51+
const regex = new RegExp(
52+
`(["'])(${external.join('|').replace('*/main.server.mjs|', '')})\\1`,
53+
'g'
54+
);
55+
return code.replace(regex, (match, p1, p2) => {
56+
return `${p1}${PREF}${p2}${p1}`;
57+
});
58+
},
59+
60+
async configureServer(server: ViteDevServer) {},
61+
async configurePreviewServer(server: PreviewServer) {},
62+
};
63+
}
64+
65+
export { createServer, normalizePath };

0 commit comments

Comments
 (0)