diff --git a/packages/next/src/server/next.ts b/packages/next/src/server/next.ts index 4ba96cea3dd7b..1593d89fbea4c 100644 --- a/packages/next/src/server/next.ts +++ b/packages/next/src/server/next.ts @@ -466,7 +466,10 @@ function createServer( 'typescript' in options && 'version' in (options as any).typescript ) { - return require('./next-typescript').createTSPlugin(options) + const pluginMod: typeof import('./next-typescript') = require('./next-typescript') + return pluginMod.createTSPlugin( + options as any + ) as unknown as NextWrapperServer } if (options == null) { diff --git a/packages/next/src/server/typescript/index.ts b/packages/next/src/server/typescript/index.ts index 97066ff0acdaa..9b97765c9b125 100644 --- a/packages/next/src/server/typescript/index.ts +++ b/packages/next/src/server/typescript/index.ts @@ -28,6 +28,10 @@ import metadata from './rules/metadata' import errorEntry from './rules/error' import type tsModule from 'typescript/lib/tsserverlibrary' +type NextTypePluginOptions = { + enabled?: boolean +} + export const createTSPlugin: tsModule.server.PluginModuleFactory = ({ typescript: ts, }) => { @@ -44,6 +48,13 @@ export const createTSPlugin: tsModule.server.PluginModuleFactory = ({ proxy[k] = (...args: Array<{}>) => x.apply(info.languageService, args) } + const pluginOptions: NextTypePluginOptions = info.config ?? { + enabled: true, + } + if (!pluginOptions.enabled) { + return proxy + } + // Auto completion proxy.getCompletionsAtPosition = ( fileName: string,