From a2e548792cd599b397b491343aa3cf76bdddafca Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sat, 29 Jul 2023 08:00:10 +0200 Subject: [PATCH 1/5] feat(kit,nuxi): add `writeTypes` utility --- packages/kit/src/internal/cjs.ts | 16 ++- packages/kit/src/template.ts | 147 +++++++++++++++++++++++- packages/nuxi/src/commands/build.ts | 4 +- packages/nuxi/src/commands/dev.ts | 4 +- packages/nuxi/src/commands/prepare.ts | 4 +- packages/nuxi/src/commands/typecheck.ts | 4 +- 6 files changed, 162 insertions(+), 17 deletions(-) diff --git a/packages/kit/src/internal/cjs.ts b/packages/kit/src/internal/cjs.ts index fe57f953084b..d15f4cf57439 100644 --- a/packages/kit/src/internal/cjs.ts +++ b/packages/kit/src/internal/cjs.ts @@ -60,15 +60,19 @@ function getRequireCacheItem (id: string) { } } +export function getModulePaths (paths?: string[] | string) { + return ([] as Array).concat( + global.__NUXT_PREPATHS__, + paths || [], + process.cwd(), + global.__NUXT_PATHS__ + ).filter(Boolean) as string[] +} + /** @deprecated Do not use CJS utils */ export function resolveModule (id: string, opts: ResolveModuleOptions = {}) { return normalize(_require.resolve(id, { - paths: ([] as Array).concat( - global.__NUXT_PREPATHS__, - opts.paths || [], - process.cwd(), - global.__NUXT_PATHS__ - ).filter(Boolean) as string[] + paths: getModulePaths(opts.paths) })) } diff --git a/packages/kit/src/template.ts b/packages/kit/src/template.ts index bce72cfd791c..862f7715fb46 100644 --- a/packages/kit/src/template.ts +++ b/packages/kit/src/template.ts @@ -1,8 +1,14 @@ -import { existsSync } from 'node:fs' -import { basename, parse, resolve } from 'pathe' +import { existsSync, promises as fsp } from 'node:fs' +import { basename, isAbsolute, join, parse, relative, resolve } from 'pathe' import hash from 'hash-sum' -import type { NuxtTemplate, ResolvedNuxtTemplate } from '@nuxt/schema' +import type { Nuxt, NuxtTemplate, ResolvedNuxtTemplate, TSReference } from '@nuxt/schema' +import { withTrailingSlash } from 'ufo' +import { defu } from 'defu' +import type { TSConfig } from 'pkg-types' +import { readPackageJSON } from 'pkg-types' + import { tryUseNuxt, useNuxt } from './context' +import { getModulePaths } from './internal/cjs' /** * Renders given template using lodash template during build into the project buildDir @@ -101,3 +107,138 @@ export function normalizeTemplate (template: NuxtTemplate | string): Resolv export async function updateTemplates (options?: { filter?: (template: ResolvedNuxtTemplate) => boolean }) { return await tryUseNuxt()?.hooks.callHook('builder:generateApp', options) } +export async function writeTypes (nuxt: Nuxt) { + const modulePaths = getModulePaths(nuxt.options.modulesDir) + + const rootDirWithSlash = withTrailingSlash(nuxt.options.rootDir) + + const tsConfig: TSConfig = defu(nuxt.options.typescript?.tsConfig, { + compilerOptions: { + forceConsistentCasingInFileNames: true, + jsx: 'preserve', + target: 'ESNext', + module: 'ESNext', + moduleResolution: nuxt.options.experimental?.typescriptBundlerResolution ? 'Bundler' : 'Node', + skipLibCheck: true, + strict: nuxt.options.typescript?.strict ?? true, + allowJs: true, + // TODO: remove by default in 3.7 + baseUrl: nuxt.options.srcDir, + noEmit: true, + resolveJsonModule: true, + allowSyntheticDefaultImports: true, + types: ['node'], + paths: {} + }, + include: [ + './nuxt.d.ts', + join(relative(nuxt.options.buildDir, nuxt.options.rootDir), '**/*'), + ...nuxt.options.srcDir !== nuxt.options.rootDir ? [join(relative(nuxt.options.buildDir, nuxt.options.srcDir), '**/*')] : [], + ...nuxt.options._layers.map(layer => layer.config.srcDir ?? layer.cwd) + .filter(srcOrCwd => !srcOrCwd.startsWith(rootDirWithSlash) || srcOrCwd.includes('node_modules')) + .map(srcOrCwd => join(relative(nuxt.options.buildDir, srcOrCwd), '**/*')), + ...nuxt.options.typescript.includeWorkspace && nuxt.options.workspaceDir !== nuxt.options.rootDir ? [join(relative(nuxt.options.buildDir, nuxt.options.workspaceDir), '**/*')] : [] + ], + exclude: [ + ...nuxt.options.modulesDir.map(m => relative(nuxt.options.buildDir, m)), + // 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')) + ] + } satisfies TSConfig) + + const aliases: Record = { + ...nuxt.options.alias, + '#build': nuxt.options.buildDir + } + + // Exclude bridge alias types to support Volar + const excludedAlias = [/^@vue\/.*$/] + + const basePath = tsConfig.compilerOptions!.baseUrl ? resolve(nuxt.options.buildDir, tsConfig.compilerOptions!.baseUrl) : nuxt.options.buildDir + + tsConfig.compilerOptions = tsConfig.compilerOptions || {} + tsConfig.include = tsConfig.include || [] + + for (const alias in aliases) { + if (excludedAlias.some(re => re.test(alias))) { + continue + } + const absolutePath = resolve(basePath, aliases[alias]) + const relativePath = relative(nuxt.options.buildDir, absolutePath) + + const stats = await fsp.stat(absolutePath).catch(() => null /* file does not exist */) + if (stats?.isDirectory()) { + tsConfig.compilerOptions.paths[alias] = [absolutePath] + tsConfig.compilerOptions.paths[`${alias}/*`] = [`${absolutePath}/*`] + + if (!absolutePath.startsWith(rootDirWithSlash)) { + tsConfig.include.push(relativePath) + } + } else { + tsConfig.compilerOptions.paths[alias] = [absolutePath.replace(/(?<=\w)\.\w+$/g, '')] /* remove extension */ + + if (!absolutePath.startsWith(rootDirWithSlash)) { + tsConfig.include.push(relativePath.replace(/(?<=\w)\.\w+$/g, '')) + } + } + } + + const references: TSReference[] = await Promise.all([ + ...nuxt.options.modules, + ...nuxt.options._modules + ] + .filter(f => typeof f === 'string') + .map(async id => ({ types: (await readPackageJSON(id, { url: modulePaths }).catch(() => null))?.name || id }))) + + if (nuxt.options.experimental?.reactivityTransform) { + references.push({ types: 'vue/macros-global' }) + } + + const declarations: string[] = [] + + tsConfig.include = [...new Set(tsConfig.include)] + tsConfig.exclude = [...new Set(tsConfig.exclude)] + + await nuxt.callHook('prepare:types', { references, declarations, tsConfig }) + + const declaration = [ + ...references.map((ref) => { + if ('path' in ref && isAbsolute(ref.path)) { + ref.path = relative(nuxt.options.buildDir, ref.path) + } + return `/// ` + }), + ...declarations, + '', + 'export {}', + '' + ].join('\n') + + async function writeFile () { + const GeneratedBy = '// Generated by nuxi' + + const tsConfigPath = resolve(nuxt.options.buildDir, 'tsconfig.json') + await fsp.mkdir(nuxt.options.buildDir, { recursive: true }) + await fsp.writeFile(tsConfigPath, GeneratedBy + '\n' + JSON.stringify(tsConfig, null, 2)) + + const declarationPath = resolve(nuxt.options.buildDir, 'nuxt.d.ts') + await fsp.writeFile(declarationPath, GeneratedBy + '\n' + declaration) + } + + // This is needed for Nuxt 2 which clears the build directory again before building + // https://github.com/nuxt/nuxt/blob/2.x/packages/builder/src/builder.js#L144 + // @ts-expect-error TODO: Nuxt 2 hook + const unsub = nuxt.hook('builder:prepared', writeFile) + + await writeFile() + + unsub() +} + +function renderAttrs (obj: Record) { + return Object.entries(obj).map(e => renderAttr(e[0], e[1])).join(' ') +} + +function renderAttr (key: string, value: string) { + return value ? `${key}="${value}"` : '' +} diff --git a/packages/nuxi/src/commands/build.ts b/packages/nuxi/src/commands/build.ts index f4a9793b19ca..cf75a92c11ca 100644 --- a/packages/nuxi/src/commands/build.ts +++ b/packages/nuxi/src/commands/build.ts @@ -1,6 +1,6 @@ import { relative, resolve } from 'pathe' import { consola } from 'consola' -import { writeTypes } from '../utils/prepare' +import { writeTypes as writeTypesLegacy } from '../utils/prepare' import { loadKit } from '../utils/kit' import { clearBuildDir } from '../utils/fs' import { overrideEnv } from '../utils/env' @@ -19,7 +19,7 @@ export default defineNuxtCommand({ const rootDir = resolve(args._[0] || '.') showVersions(rootDir) - const { loadNuxt, buildNuxt, useNitro } = await loadKit(rootDir) + const { loadNuxt, buildNuxt, useNitro, writeTypes = writeTypesLegacy } = await loadKit(rootDir) const nuxt = await loadNuxt({ rootDir, diff --git a/packages/nuxi/src/commands/dev.ts b/packages/nuxi/src/commands/dev.ts index 9da83dc68541..f89d5b0f1792 100644 --- a/packages/nuxi/src/commands/dev.ts +++ b/packages/nuxi/src/commands/dev.ts @@ -8,7 +8,7 @@ import { consola } from 'consola' import { withTrailingSlash } from 'ufo' import { setupDotenv } from 'c12' import { showBanner, showVersions } from '../utils/banner' -import { writeTypes } from '../utils/prepare' +import { writeTypes as writeTypesLegacy } from '../utils/prepare' import { loadKit } from '../utils/kit' import { importModule } from '../utils/esm' import { overrideEnv } from '../utils/env' @@ -30,7 +30,7 @@ export default defineNuxtCommand({ await setupDotenv({ cwd: rootDir, fileName: args.dotenv }) - const { loadNuxt, loadNuxtConfig, buildNuxt } = await loadKit(rootDir) + const { loadNuxt, loadNuxtConfig, buildNuxt, writeTypes = writeTypesLegacy } = await loadKit(rootDir) const config = await loadNuxtConfig({ cwd: rootDir, diff --git a/packages/nuxi/src/commands/prepare.ts b/packages/nuxi/src/commands/prepare.ts index 026df3899332..34c512097262 100644 --- a/packages/nuxi/src/commands/prepare.ts +++ b/packages/nuxi/src/commands/prepare.ts @@ -2,7 +2,7 @@ import { relative, resolve } from 'pathe' import { consola } from 'consola' import { clearBuildDir } from '../utils/fs' import { loadKit } from '../utils/kit' -import { writeTypes } from '../utils/prepare' +import { writeTypes as writeTypesLegacy } from '../utils/prepare' import { defineNuxtCommand } from './index' export default defineNuxtCommand({ @@ -15,7 +15,7 @@ export default defineNuxtCommand({ process.env.NODE_ENV = process.env.NODE_ENV || 'production' const rootDir = resolve(args._[0] || '.') - const { loadNuxt, buildNuxt } = await loadKit(rootDir) + const { loadNuxt, buildNuxt, writeTypes = writeTypesLegacy } = await loadKit(rootDir) const nuxt = await loadNuxt({ rootDir, overrides: { diff --git a/packages/nuxi/src/commands/typecheck.ts b/packages/nuxi/src/commands/typecheck.ts index aa21e7d1e175..5afd98d1b0ef 100644 --- a/packages/nuxi/src/commands/typecheck.ts +++ b/packages/nuxi/src/commands/typecheck.ts @@ -3,7 +3,7 @@ import { resolve } from 'pathe' import { tryResolveModule } from '../utils/esm' import { loadKit } from '../utils/kit' -import { writeTypes } from '../utils/prepare' +import { writeTypes as writeTypesLegacy } from '../utils/prepare' import { defineNuxtCommand } from './index' export default defineNuxtCommand({ @@ -16,7 +16,7 @@ export default defineNuxtCommand({ process.env.NODE_ENV = process.env.NODE_ENV || 'production' const rootDir = resolve(args._[0] || '.') - const { loadNuxt, buildNuxt } = await loadKit(rootDir) + const { loadNuxt, buildNuxt, writeTypes = writeTypesLegacy } = await loadKit(rootDir) const nuxt = await loadNuxt({ rootDir, overrides: { From 17d815fe6434586e6caf2a05ab7435ac8d86efcc Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sun, 30 Jul 2023 11:13:30 +0100 Subject: [PATCH 2/5] chore: migrate file extension fix to writeTypes --- packages/kit/src/template.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/template.ts b/packages/kit/src/template.ts index 862f7715fb46..9de92087c984 100644 --- a/packages/kit/src/template.ts +++ b/packages/kit/src/template.ts @@ -175,10 +175,14 @@ export async function writeTypes (nuxt: Nuxt) { tsConfig.include.push(relativePath) } } else { - tsConfig.compilerOptions.paths[alias] = [absolutePath.replace(/(?<=\w)\.\w+$/g, '')] /* remove extension */ + const path = stats?.isFile() + ? absolutePath.replace(/(?<=\w)\.\w+$/g, '') /* remove extension */ + : absolutePath + + tsConfig.compilerOptions.paths[alias] = [path] if (!absolutePath.startsWith(rootDirWithSlash)) { - tsConfig.include.push(relativePath.replace(/(?<=\w)\.\w+$/g, '')) + tsConfig.include.push(path) } } } From 7e80c9e6034e57f918c0bc28fc03b3c4b1ef7a09 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sun, 30 Jul 2023 16:31:29 +0100 Subject: [PATCH 3/5] fix: inline kit version of `writeTypes` as backup rather than duplicating code --- packages/nuxi/src/commands/build.ts | 2 +- packages/nuxi/src/commands/dev.ts | 2 +- packages/nuxi/src/commands/prepare.ts | 2 +- packages/nuxi/src/commands/typecheck.ts | 3 +- packages/nuxi/src/utils/cjs.ts | 12 +- packages/nuxi/src/utils/prepare.ts | 141 ------------------------ 6 files changed, 7 insertions(+), 155 deletions(-) delete mode 100644 packages/nuxi/src/utils/prepare.ts diff --git a/packages/nuxi/src/commands/build.ts b/packages/nuxi/src/commands/build.ts index cf75a92c11ca..00a55646ce4c 100644 --- a/packages/nuxi/src/commands/build.ts +++ b/packages/nuxi/src/commands/build.ts @@ -1,6 +1,6 @@ import { relative, resolve } from 'pathe' import { consola } from 'consola' -import { writeTypes as writeTypesLegacy } from '../utils/prepare' +import { writeTypes as writeTypesLegacy } from '@nuxt/kit' import { loadKit } from '../utils/kit' import { clearBuildDir } from '../utils/fs' import { overrideEnv } from '../utils/env' diff --git a/packages/nuxi/src/commands/dev.ts b/packages/nuxi/src/commands/dev.ts index f89d5b0f1792..8da27c900257 100644 --- a/packages/nuxi/src/commands/dev.ts +++ b/packages/nuxi/src/commands/dev.ts @@ -8,7 +8,7 @@ import { consola } from 'consola' import { withTrailingSlash } from 'ufo' import { setupDotenv } from 'c12' import { showBanner, showVersions } from '../utils/banner' -import { writeTypes as writeTypesLegacy } from '../utils/prepare' +import { writeTypes as writeTypesLegacy } from '@nuxt/kit' import { loadKit } from '../utils/kit' import { importModule } from '../utils/esm' import { overrideEnv } from '../utils/env' diff --git a/packages/nuxi/src/commands/prepare.ts b/packages/nuxi/src/commands/prepare.ts index 34c512097262..c11c3e257b75 100644 --- a/packages/nuxi/src/commands/prepare.ts +++ b/packages/nuxi/src/commands/prepare.ts @@ -2,7 +2,7 @@ import { relative, resolve } from 'pathe' import { consola } from 'consola' import { clearBuildDir } from '../utils/fs' import { loadKit } from '../utils/kit' -import { writeTypes as writeTypesLegacy } from '../utils/prepare' +import { writeTypes as writeTypesLegacy } from '@nuxt/kit' import { defineNuxtCommand } from './index' export default defineNuxtCommand({ diff --git a/packages/nuxi/src/commands/typecheck.ts b/packages/nuxi/src/commands/typecheck.ts index 5afd98d1b0ef..ab3f8c2cceaa 100644 --- a/packages/nuxi/src/commands/typecheck.ts +++ b/packages/nuxi/src/commands/typecheck.ts @@ -2,8 +2,9 @@ import { execa } from 'execa' import { resolve } from 'pathe' import { tryResolveModule } from '../utils/esm' +import { writeTypes as writeTypesLegacy } from '../../../kit/src/template' + import { loadKit } from '../utils/kit' -import { writeTypes as writeTypesLegacy } from '../utils/prepare' import { defineNuxtCommand } from './index' export default defineNuxtCommand({ diff --git a/packages/nuxi/src/utils/cjs.ts b/packages/nuxi/src/utils/cjs.ts index a8fefc11df22..1f9c1125a073 100644 --- a/packages/nuxi/src/utils/cjs.ts +++ b/packages/nuxi/src/utils/cjs.ts @@ -1,7 +1,7 @@ import { createRequire } from 'node:module' -import { dirname, normalize } from 'pathe' +import { normalize } from 'pathe' -export function getModulePaths (paths?: string | string[]): string[] { +function getModulePaths (paths?: string | string[]): string[] { return ([] as Array) .concat( global.__NUXT_PREPATHS__, @@ -25,11 +25,3 @@ function requireModule (id: string, paths?: string | string[]) { export function tryRequireModule (id: string, paths?: string | string[]) { try { return requireModule(id, paths) } catch { return null } } - -export function getNearestPackage (id: string, paths?: string | string[]) { - while (dirname(id) !== id) { - try { return requireModule(id + '/package.json', paths) } catch {} - id = dirname(id) - } - return null -} diff --git a/packages/nuxi/src/utils/prepare.ts b/packages/nuxi/src/utils/prepare.ts deleted file mode 100644 index bdcb64fda687..000000000000 --- a/packages/nuxi/src/utils/prepare.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { promises as fsp } from 'node:fs' -import { isAbsolute, join, relative, resolve } from 'pathe' -import type { Nuxt, TSReference } from '@nuxt/schema' -import { defu } from 'defu' -import type { TSConfig } from 'pkg-types' -import { withTrailingSlash } from 'ufo' -import { getModulePaths, getNearestPackage } from './cjs' - -export const writeTypes = async (nuxt: Nuxt) => { - const modulePaths = getModulePaths(nuxt.options.modulesDir) - - const rootDirWithSlash = withTrailingSlash(nuxt.options.rootDir) - - const tsConfig: TSConfig = defu(nuxt.options.typescript?.tsConfig, { - compilerOptions: { - forceConsistentCasingInFileNames: true, - jsx: 'preserve', - target: 'ESNext', - module: 'ESNext', - moduleResolution: nuxt.options.experimental?.typescriptBundlerResolution ? 'Bundler' : 'Node', - skipLibCheck: true, - strict: nuxt.options.typescript?.strict ?? true, - allowJs: true, - // TODO: remove by default in 3.7 - baseUrl: nuxt.options.srcDir, - noEmit: true, - resolveJsonModule: true, - allowSyntheticDefaultImports: true, - types: ['node'], - paths: {} - }, - include: [ - './nuxt.d.ts', - join(relative(nuxt.options.buildDir, nuxt.options.rootDir), '**/*'), - ...nuxt.options.srcDir !== nuxt.options.rootDir ? [join(relative(nuxt.options.buildDir, nuxt.options.srcDir), '**/*')] : [], - ...nuxt.options._layers.map(layer => layer.config.srcDir ?? layer.cwd) - .filter(srcOrCwd => !srcOrCwd.startsWith(rootDirWithSlash) || srcOrCwd.includes('node_modules')) - .map(srcOrCwd => join(relative(nuxt.options.buildDir, srcOrCwd), '**/*')), - ...nuxt.options.typescript.includeWorkspace && nuxt.options.workspaceDir !== nuxt.options.rootDir ? [join(relative(nuxt.options.buildDir, nuxt.options.workspaceDir), '**/*')] : [] - ], - exclude: [ - // 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')) - ] - } satisfies TSConfig) - - const aliases: Record = { - ...nuxt.options.alias, - '#build': nuxt.options.buildDir - } - - // Exclude bridge alias types to support Volar - const excludedAlias = [/^@vue\/.*$/] - - const basePath = tsConfig.compilerOptions!.baseUrl ? resolve(nuxt.options.buildDir, tsConfig.compilerOptions!.baseUrl) : nuxt.options.buildDir - - tsConfig.compilerOptions = tsConfig.compilerOptions || {} - tsConfig.include = tsConfig.include || [] - - for (const alias in aliases) { - if (excludedAlias.some(re => re.test(alias))) { - continue - } - const absolutePath = resolve(basePath, aliases[alias]) - - const stats = await fsp.stat(absolutePath).catch(() => null /* file does not exist */) - if (stats?.isDirectory()) { - tsConfig.compilerOptions.paths[alias] = [absolutePath] - tsConfig.compilerOptions.paths[`${alias}/*`] = [`${absolutePath}/*`] - - if (!absolutePath.startsWith(rootDirWithSlash)) { - tsConfig.include.push(absolutePath) - tsConfig.include.push(`${absolutePath}/*`) - } - } else { - const path = stats?.isFile() - ? absolutePath.replace(/(?<=\w)\.\w+$/g, '') /* remove extension */ - : absolutePath - - tsConfig.compilerOptions.paths[alias] = [path] - - if (!absolutePath.startsWith(rootDirWithSlash)) { - tsConfig.include.push(path) - } - } - } - - const references: TSReference[] = [ - ...nuxt.options.modules, - ...nuxt.options._modules - ] - .filter(f => typeof f === 'string') - .map(id => ({ types: getNearestPackage(id, modulePaths)?.name || id })) - - if (nuxt.options.experimental?.reactivityTransform) { - references.push({ types: 'vue/macros-global' }) - } - - const declarations: string[] = [] - - await nuxt.callHook('prepare:types', { references, declarations, tsConfig }) - - const declaration = [ - ...references.map((ref) => { - if ('path' in ref && isAbsolute(ref.path)) { - ref.path = relative(nuxt.options.buildDir, ref.path) - } - return `/// ` - }), - ...declarations, - '', - 'export {}', - '' - ].join('\n') - - async function writeFile () { - const GeneratedBy = '// Generated by nuxi' - - const tsConfigPath = resolve(nuxt.options.buildDir, 'tsconfig.json') - await fsp.mkdir(nuxt.options.buildDir, { recursive: true }) - await fsp.writeFile(tsConfigPath, GeneratedBy + '\n' + JSON.stringify(tsConfig, null, 2)) - - const declarationPath = resolve(nuxt.options.buildDir, 'nuxt.d.ts') - await fsp.writeFile(declarationPath, GeneratedBy + '\n' + declaration) - } - - // This is needed for Nuxt 2 which clears the build directory again before building - // https://github.com/nuxt/nuxt/blob/2.x/packages/builder/src/builder.js#L144 - // @ts-expect-error TODO: Nuxt 2 hook - nuxt.hook('builder:prepared', writeFile) - - await writeFile() -} - -function renderAttrs (obj: Record) { - return Object.entries(obj).map(e => renderAttr(e[0], e[1])).join(' ') -} - -function renderAttr (key: string, value: string) { - return value ? `${key}="${value}"` : '' -} From 263db02f157960a0b73005daa4ec12d5a6f16da8 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sun, 30 Jul 2023 15:34:53 +0000 Subject: [PATCH 4/5] [autofix.ci] apply automated fixes --- packages/nuxi/src/commands/dev.ts | 2 +- packages/nuxi/src/commands/prepare.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nuxi/src/commands/dev.ts b/packages/nuxi/src/commands/dev.ts index 8da27c900257..e3f08bd55ae8 100644 --- a/packages/nuxi/src/commands/dev.ts +++ b/packages/nuxi/src/commands/dev.ts @@ -7,8 +7,8 @@ import type { Nuxt } from '@nuxt/schema' import { consola } from 'consola' import { withTrailingSlash } from 'ufo' import { setupDotenv } from 'c12' -import { showBanner, showVersions } from '../utils/banner' import { writeTypes as writeTypesLegacy } from '@nuxt/kit' +import { showBanner, showVersions } from '../utils/banner' import { loadKit } from '../utils/kit' import { importModule } from '../utils/esm' import { overrideEnv } from '../utils/env' diff --git a/packages/nuxi/src/commands/prepare.ts b/packages/nuxi/src/commands/prepare.ts index c11c3e257b75..ac423d61a481 100644 --- a/packages/nuxi/src/commands/prepare.ts +++ b/packages/nuxi/src/commands/prepare.ts @@ -1,8 +1,8 @@ import { relative, resolve } from 'pathe' import { consola } from 'consola' +import { writeTypes as writeTypesLegacy } from '@nuxt/kit' import { clearBuildDir } from '../utils/fs' import { loadKit } from '../utils/kit' -import { writeTypes as writeTypesLegacy } from '@nuxt/kit' import { defineNuxtCommand } from './index' export default defineNuxtCommand({ From 4e1c3aa42b4695e1e815c06bec9bf553fee79628 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sun, 30 Jul 2023 16:38:01 +0100 Subject: [PATCH 5/5] fix: use relative paths for all imports --- packages/nuxi/src/commands/build.ts | 4 +++- packages/nuxi/src/commands/dev.ts | 4 +++- packages/nuxi/src/commands/prepare.ts | 4 +++- packages/nuxi/src/commands/typecheck.ts | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/nuxi/src/commands/build.ts b/packages/nuxi/src/commands/build.ts index 00a55646ce4c..e87a22f54635 100644 --- a/packages/nuxi/src/commands/build.ts +++ b/packages/nuxi/src/commands/build.ts @@ -1,6 +1,8 @@ import { relative, resolve } from 'pathe' import { consola } from 'consola' -import { writeTypes as writeTypesLegacy } from '@nuxt/kit' + +// we are deliberately inlining this code as a backup in case user has `@nuxt/schema<3.7` +import { writeTypes as writeTypesLegacy } from '../../../kit/src/template' import { loadKit } from '../utils/kit' import { clearBuildDir } from '../utils/fs' import { overrideEnv } from '../utils/env' diff --git a/packages/nuxi/src/commands/dev.ts b/packages/nuxi/src/commands/dev.ts index e3f08bd55ae8..d979872066fb 100644 --- a/packages/nuxi/src/commands/dev.ts +++ b/packages/nuxi/src/commands/dev.ts @@ -7,7 +7,9 @@ import type { Nuxt } from '@nuxt/schema' import { consola } from 'consola' import { withTrailingSlash } from 'ufo' import { setupDotenv } from 'c12' -import { writeTypes as writeTypesLegacy } from '@nuxt/kit' + +// we are deliberately inlining this code as a backup in case user has `@nuxt/schema<3.7` +import { writeTypes as writeTypesLegacy } from '../../../kit/src/template' import { showBanner, showVersions } from '../utils/banner' import { loadKit } from '../utils/kit' import { importModule } from '../utils/esm' diff --git a/packages/nuxi/src/commands/prepare.ts b/packages/nuxi/src/commands/prepare.ts index ac423d61a481..dfec71e16e76 100644 --- a/packages/nuxi/src/commands/prepare.ts +++ b/packages/nuxi/src/commands/prepare.ts @@ -1,6 +1,8 @@ import { relative, resolve } from 'pathe' import { consola } from 'consola' -import { writeTypes as writeTypesLegacy } from '@nuxt/kit' + +// we are deliberately inlining this code as a backup in case user has `@nuxt/schema<3.7` +import { writeTypes as writeTypesLegacy } from '../../../kit/src/template' import { clearBuildDir } from '../utils/fs' import { loadKit } from '../utils/kit' import { defineNuxtCommand } from './index' diff --git a/packages/nuxi/src/commands/typecheck.ts b/packages/nuxi/src/commands/typecheck.ts index ab3f8c2cceaa..ee5a28ab56e5 100644 --- a/packages/nuxi/src/commands/typecheck.ts +++ b/packages/nuxi/src/commands/typecheck.ts @@ -1,9 +1,9 @@ import { execa } from 'execa' import { resolve } from 'pathe' -import { tryResolveModule } from '../utils/esm' +// we are deliberately inlining this code as a backup in case user has `@nuxt/schema<3.7` import { writeTypes as writeTypesLegacy } from '../../../kit/src/template' - +import { tryResolveModule } from '../utils/esm' import { loadKit } from '../utils/kit' import { defineNuxtCommand } from './index'