From 2dd319b42a986c8f7a100c23544c0acf7662618e Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 28 Apr 2023 10:52:28 +0100 Subject: [PATCH 1/3] feat(nuxt): support separate server tsconfig --- packages/nuxi/src/utils/prepare.ts | 1 + packages/nuxt/src/core/nitro.ts | 4 +++- test/fixtures/basic/server/api/useAsyncData/count.ts | 6 ++++++ test/fixtures/basic/server/tsconfig.json | 3 +++ 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/basic/server/tsconfig.json diff --git a/packages/nuxi/src/utils/prepare.ts b/packages/nuxi/src/utils/prepare.ts index 30ed3eed3f0b..5b495c053a51 100644 --- a/packages/nuxi/src/utils/prepare.ts +++ b/packages/nuxi/src/utils/prepare.ts @@ -32,6 +32,7 @@ export const writeTypes = async (nuxt: Nuxt) => { ...nuxt.options.typescript.includeWorkspace && nuxt.options.workspaceDir !== nuxt.options.rootDir ? [join(relative(nuxt.options.buildDir, nuxt.options.workspaceDir), '**/*')] : [] ], exclude: [ + relative(nuxt.options.buildDir, nuxt.options.serverDir), // nitro generate output: https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/core/nitro.ts#L186 relative(nuxt.options.buildDir, resolve(nuxt.options.rootDir, 'dist')) ] diff --git a/packages/nuxt/src/core/nitro.ts b/packages/nuxt/src/core/nitro.ts index 7c13f7e8488b..9528d734e683 100644 --- a/packages/nuxt/src/core/nitro.ts +++ b/packages/nuxt/src/core/nitro.ts @@ -92,7 +92,9 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) { layer => resolve(layer.config.srcDir, 'app.config') ), typescript: { - generateTsConfig: false + strict: true, + generateTsConfig: true, + tsconfigPath: 'tsconfig.server.json' }, publicAssets: [ nuxt.options.dev diff --git a/test/fixtures/basic/server/api/useAsyncData/count.ts b/test/fixtures/basic/server/api/useAsyncData/count.ts index 8cdb1c14aa7a..ac2f27d685d4 100644 --- a/test/fixtures/basic/server/api/useAsyncData/count.ts +++ b/test/fixtures/basic/server/api/useAsyncData/count.ts @@ -1,3 +1,9 @@ let counter = 0 +const test = () => () => { + // @ts-expect-error useNuxtApp should be undefined in a nitro route + useNuxtApp() +} +test() + export default defineEventHandler(() => ({ count: counter++ })) diff --git a/test/fixtures/basic/server/tsconfig.json b/test/fixtures/basic/server/tsconfig.json new file mode 100644 index 000000000000..b9ed69c19eaf --- /dev/null +++ b/test/fixtures/basic/server/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../.nuxt/tsconfig.server.json" +} From 632e1d9bdc96f2bf8ef19ce0bd6bd13acf0b5726 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Mon, 15 May 2023 13:40:33 +0100 Subject: [PATCH 2/3] fix: don't exclude nuxt directory (for now) --- packages/nuxi/src/utils/prepare.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/nuxi/src/utils/prepare.ts b/packages/nuxi/src/utils/prepare.ts index 5b495c053a51..30ed3eed3f0b 100644 --- a/packages/nuxi/src/utils/prepare.ts +++ b/packages/nuxi/src/utils/prepare.ts @@ -32,7 +32,6 @@ export const writeTypes = async (nuxt: Nuxt) => { ...nuxt.options.typescript.includeWorkspace && nuxt.options.workspaceDir !== nuxt.options.rootDir ? [join(relative(nuxt.options.buildDir, nuxt.options.workspaceDir), '**/*')] : [] ], exclude: [ - relative(nuxt.options.buildDir, nuxt.options.serverDir), // nitro generate output: https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/core/nitro.ts#L186 relative(nuxt.options.buildDir, resolve(nuxt.options.rootDir, 'dist')) ] From f739cdf3d9b9f2d40a915d4efcf424fc46e96210 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Mon, 15 May 2023 13:42:21 +0100 Subject: [PATCH 3/3] test: disable type test for now --- test/fixtures/basic/server/api/useAsyncData/count.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/fixtures/basic/server/api/useAsyncData/count.ts b/test/fixtures/basic/server/api/useAsyncData/count.ts index ac2f27d685d4..b529bb034ce1 100644 --- a/test/fixtures/basic/server/api/useAsyncData/count.ts +++ b/test/fixtures/basic/server/api/useAsyncData/count.ts @@ -1,7 +1,7 @@ let counter = 0 const test = () => () => { - // @ts-expect-error useNuxtApp should be undefined in a nitro route + // TODO: useNuxtApp should be undefined when type-testing a nitro route useNuxtApp() } test()