Skip to content

Commit 5d62d79

Browse files
committed
set up ts vfs
1 parent 9864644 commit 5d62d79

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

packages/next/src/server/typescript/index.ts

-4
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ export const createTSPlugin: tsModule.server.PluginModuleFactory = ({
5050
return proxy
5151
}
5252

53-
const logger = info.project.projectService.logger
54-
55-
logger.info('[Next.js] Initializing...')
56-
5753
init({
5854
ts,
5955
info,

packages/next/src/server/typescript/utils.ts

+23-6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
import type { VirtualTypeScriptEnvironment } from 'next/dist/compiled/@typescript/vfs'
2+
import {
3+
createSystem,
4+
createVirtualTypeScriptEnvironment,
5+
} from 'next/dist/compiled/@typescript/vfs'
6+
17
import path from 'path'
28

39
import type tsModule from 'typescript/lib/tsserverlibrary'
@@ -6,23 +12,34 @@ type TypeScript = typeof import('typescript/lib/tsserverlibrary')
612
let ts: TypeScript
713
let info: tsModule.server.PluginCreateInfo
814
let appDirRegExp: RegExp
15+
export let virtualTsEnv: VirtualTypeScriptEnvironment
916

1017
export function log(message: string) {
1118
info.project.projectService.logger.info(message)
1219
}
1320

1421
// This function has to be called initially.
15-
export function init(opts: {
16-
ts: TypeScript
17-
info: tsModule.server.PluginCreateInfo
18-
}) {
22+
export function init(opts: { ts: TypeScript; info: tsModule.server.PluginCreateInfo }) {
23+
const projectDir = opts.info.project.getCurrentDirectory()
1924
ts = opts.ts
2025
info = opts.info
21-
const projectDir = info.project.getCurrentDirectory()
2226
appDirRegExp = new RegExp(
2327
'^' + (projectDir + '(/src)?/app').replace(/[\\/]/g, '[\\/]')
2428
)
25-
log('Starting Next.js TypeScript plugin: ' + projectDir)
29+
30+
log('[next] Initializing Next.js TypeScript plugin at ' + projectDir)
31+
32+
const fsMap = new Map<string, string>()
33+
const system = createSystem(fsMap)
34+
const compilerOptions = info.project.getCompilerOptions()
35+
virtualTsEnv = createVirtualTypeScriptEnvironment(
36+
system,
37+
[],
38+
ts,
39+
compilerOptions
40+
)
41+
42+
log('[next] Successfully initialized Next.js TypeScript plugin!')
2643
}
2744

2845
export function getTs() {

0 commit comments

Comments
 (0)