From b966aa48bbb9ed1695d78b3480b35913941fb22e Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sat, 9 Aug 2025 15:32:03 +0100 Subject: [PATCH 1/2] fix(upgrade): do not use cache when getting nuxt version --- packages/nuxi/src/commands/module/_utils.ts | 13 +------------ packages/nuxi/src/commands/module/add.ts | 3 ++- packages/nuxi/src/commands/module/search.ts | 3 ++- packages/nuxi/src/commands/upgrade.ts | 20 ++++---------------- packages/nuxi/src/utils/versions.ts | 12 ++++++++++++ 5 files changed, 21 insertions(+), 30 deletions(-) create mode 100644 packages/nuxi/src/utils/versions.ts diff --git a/packages/nuxi/src/commands/module/_utils.ts b/packages/nuxi/src/commands/module/_utils.ts index d61cfed04..7e4b05d3f 100644 --- a/packages/nuxi/src/commands/module/_utils.ts +++ b/packages/nuxi/src/commands/module/_utils.ts @@ -1,7 +1,6 @@ import { parseINI } from 'confbox' import { $fetch } from 'ofetch' -import { readPackageJSON } from 'pkg-types' -import { coerce, satisfies } from 'semver' +import { satisfies } from 'semver' export const categories = [ 'Analytics', @@ -116,16 +115,6 @@ export function checkNuxtCompatibility( }) } -export async function getNuxtVersion(cwd: string) { - const nuxtPkg = await readPackageJSON('nuxt', { url: cwd }).catch(() => null) - if (nuxtPkg) { - return nuxtPkg.version! - } - const pkg = await readPackageJSON(cwd) - const pkgDep = pkg?.dependencies?.nuxt || pkg?.devDependencies?.nuxt - return (pkgDep && coerce(pkgDep)?.version) || '3.0.0' -} - export function getRegistryFromContent(content: string, scope: string | null) { try { const npmConfig = parseINI>(content) diff --git a/packages/nuxi/src/commands/module/add.ts b/packages/nuxi/src/commands/module/add.ts index 062faca24..b40723a3f 100644 --- a/packages/nuxi/src/commands/module/add.ts +++ b/packages/nuxi/src/commands/module/add.ts @@ -19,8 +19,9 @@ import { joinURL } from 'ufo' import { runCommand } from '../../run' import { logger } from '../../utils/logger' +import { getNuxtVersion } from '../../utils/versions' import { cwdArgs, logLevelArgs } from '../_shared' -import { checkNuxtCompatibility, fetchModules, getNuxtVersion, getRegistryFromContent } from './_utils' +import { checkNuxtCompatibility, fetchModules, getRegistryFromContent } from './_utils' interface RegistryMeta { registry: string diff --git a/packages/nuxi/src/commands/module/search.ts b/packages/nuxi/src/commands/module/search.ts index 285eeddc0..701199f16 100644 --- a/packages/nuxi/src/commands/module/search.ts +++ b/packages/nuxi/src/commands/module/search.ts @@ -4,8 +4,9 @@ import Fuse from 'fuse.js' import { kebabCase, upperFirst } from 'scule' import { logger } from '../../utils/logger' +import { getNuxtVersion } from '../../utils/versions' import { cwdArgs } from '../_shared' -import { checkNuxtCompatibility, fetchModules, getNuxtVersion } from './_utils' +import { checkNuxtCompatibility, fetchModules } from './_utils' const { format: formatNumber } = Intl.NumberFormat('en-GB', { notation: 'compact', diff --git a/packages/nuxi/src/commands/upgrade.ts b/packages/nuxi/src/commands/upgrade.ts index 227e16c72..640c92c7a 100644 --- a/packages/nuxi/src/commands/upgrade.ts +++ b/packages/nuxi/src/commands/upgrade.ts @@ -13,21 +13,9 @@ import { loadKit } from '../utils/kit' import { logger } from '../utils/logger' import { cleanupNuxtDirs, nuxtVersionToGitIdentifier } from '../utils/nuxt' import { getPackageManagerVersion } from '../utils/packageManagers' +import { getNuxtVersion } from '../utils/versions' import { cwdArgs, legacyRootDirArgs, logLevelArgs } from './_shared' -async function getNuxtVersion(path: string): Promise { - try { - const pkg = await readPackageJSON('nuxt', { url: path }) - if (!pkg.version) { - logger.warn('Cannot find any installed Nuxt versions in ', path) - } - return pkg.version || null - } - catch { - return null - } -} - function checkNuxtDependencyType(pkg: PackageJson): 'dependencies' | 'devDependencies' { if (pkg.dependencies?.nuxt) { return 'dependencies' @@ -109,7 +97,7 @@ export default defineCommand({ logger.info('Package manager:', packageManagerName, packageManagerVersion) // Check currently installed Nuxt version - const currentVersion = (await getNuxtVersion(cwd)) || '[unknown]' + const currentVersion = (await getNuxtVersion(cwd, false)) || '[unknown]' logger.info('Current Nuxt version:', currentVersion) const pkg = await readPackageJSON(cwd).catch(() => null) @@ -195,7 +183,7 @@ export default defineCommand({ await cleanupNuxtDirs(cwd, buildDir) // Check installed Nuxt version again - const upgradedVersion = (await getNuxtVersion(cwd)) || '[unknown]' + const upgradedVersion = (await getNuxtVersion(cwd, false)) || '[unknown]' logger.info('Upgraded Nuxt version:', upgradedVersion) if (upgradedVersion === '[unknown]') { @@ -203,7 +191,7 @@ export default defineCommand({ } if (upgradedVersion === currentVersion) { - logger.success('You\'re already using the latest version of Nuxt.') + logger.success('You\'re using the latest version of Nuxt.') } else { logger.success( diff --git a/packages/nuxi/src/utils/versions.ts b/packages/nuxi/src/utils/versions.ts new file mode 100644 index 000000000..0f31a270d --- /dev/null +++ b/packages/nuxi/src/utils/versions.ts @@ -0,0 +1,12 @@ +import { readPackageJSON } from 'pkg-types' +import { coerce } from 'semver' + +export async function getNuxtVersion(cwd: string, cache = true) { + const nuxtPkg = await readPackageJSON('nuxt', { url: cwd, try: true, cache }) + if (nuxtPkg) { + return nuxtPkg.version! + } + const pkg = await readPackageJSON(cwd) + const pkgDep = pkg?.dependencies?.nuxt || pkg?.devDependencies?.nuxt + return (pkgDep && coerce(pkgDep)?.version) || '3.0.0' +} From 54d3e475226e2d48dfe05329ec19bb3a6474b6a5 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sat, 9 Aug 2025 15:42:25 +0100 Subject: [PATCH 2/2] test: mock new location instead... --- packages/nuxi/test/unit/commands/module/add.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/nuxi/test/unit/commands/module/add.spec.ts b/packages/nuxi/test/unit/commands/module/add.spec.ts index c40d06058..09a31ef34 100644 --- a/packages/nuxi/test/unit/commands/module/add.spec.ts +++ b/packages/nuxi/test/unit/commands/module/add.spec.ts @@ -3,6 +3,7 @@ import { beforeAll, describe, expect, it, vi } from 'vitest' import commands from '../../../../src/commands/module' import * as utils from '../../../../src/commands/module/_utils' import * as runCommands from '../../../../src/run' +import * as versions from '../../../../src/utils/versions' const updateConfig = vi.fn(() => Promise.resolve()) const addDependency = vi.fn(() => Promise.resolve()) @@ -80,7 +81,7 @@ describe('module add', () => { }) applyMocks() vi.spyOn(runCommands, 'runCommand').mockImplementation(vi.fn()) - vi.spyOn(utils, 'getNuxtVersion').mockResolvedValue('3.0.0') + vi.spyOn(versions, 'getNuxtVersion').mockResolvedValue('3.0.0') vi.spyOn(utils, 'fetchModules').mockResolvedValue([ { name: 'content',