From 6a39155a47ee529feb8b3ce2396c88ebb612ac3e Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Wed, 17 Aug 2022 20:04:53 +1000 Subject: [PATCH 1/4] fix(nuxi): ensure update dependency install uses provided path --- packages/nuxi/src/commands/upgrade.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/nuxi/src/commands/upgrade.ts b/packages/nuxi/src/commands/upgrade.ts index 796d9261fd5..c92ef5dbd49 100644 --- a/packages/nuxi/src/commands/upgrade.ts +++ b/packages/nuxi/src/commands/upgrade.ts @@ -2,10 +2,10 @@ import { execSync } from 'node:child_process' import { promises as fsp } from 'node:fs' import consola from 'consola' import { resolve } from 'pathe' -import { resolveModule } from '../utils/cjs' import { getPackageManager, packageManagerLocks } from '../utils/packageManagers' import { rmRecursive, touchFile } from '../utils/fs' import { cleanupNuxtDirs } from '../utils/nuxt' +import { getNearestPackage, resolveModule } from '../utils/cjs' import { defineNuxtCommand } from './index' async function getNuxtVersion (paths: string | string[]): Promise { @@ -53,13 +53,22 @@ export default defineNuxtCommand({ // Install latest rc consola.info('Installing latest Nuxt 3 RC...') - execSync(`${packageManager} ${packageManager === 'yarn' ? 'add' : 'install'} -D nuxt@rc`, { stdio: 'inherit' }) + execSync(`${packageManager} ${packageManager === 'yarn' ? 'add' : 'install'} -D nuxt@rc`, { stdio: 'inherit', cwd: rootDir }) // Cleanup after upgrade await cleanupNuxtDirs(rootDir) // Check installed nuxt version again - const upgradedVersion = await getNuxtVersion(rootDir) || '[unknown]' + let upgradedVersion = await getNuxtVersion(rootDir) + // The above will occasionally fail when running in a non cwd, seems to be a caching issue (fetches last versions module) + if (!upgradedVersion) { + try { + // fallback to fetching version from package.json + upgradedVersion = getNearestPackage(rootDir).devDependencies?.nuxt || '[unknown]' + } catch { + upgradedVersion = '[unknown]' + } + } consola.info('Upgraded nuxt version:', upgradedVersion) if (upgradedVersion === currentVersion) { From 38d28e7e64965e227b68252cb88c0040fe7f87f4 Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Wed, 17 Aug 2022 20:52:29 +1000 Subject: [PATCH 2/4] fix(nuxi): resolve pkgJson with pkg-types --- packages/nuxi/src/commands/upgrade.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/nuxi/src/commands/upgrade.ts b/packages/nuxi/src/commands/upgrade.ts index c92ef5dbd49..d7e4b3772f4 100644 --- a/packages/nuxi/src/commands/upgrade.ts +++ b/packages/nuxi/src/commands/upgrade.ts @@ -1,19 +1,18 @@ import { execSync } from 'node:child_process' -import { promises as fsp } from 'node:fs' import consola from 'consola' import { resolve } from 'pathe' +import { readPackageJSON } from 'pkg-types' import { getPackageManager, packageManagerLocks } from '../utils/packageManagers' import { rmRecursive, touchFile } from '../utils/fs' import { cleanupNuxtDirs } from '../utils/nuxt' -import { getNearestPackage, resolveModule } from '../utils/cjs' +import { getNearestPackage } from '../utils/cjs' import { defineNuxtCommand } from './index' -async function getNuxtVersion (paths: string | string[]): Promise { +async function getNuxtVersion (path: string): Promise { try { - const pkgJson = resolveModule('nuxt/package.json', paths) - const pkg = pkgJson && JSON.parse(await fsp.readFile(pkgJson, 'utf8')) + const pkg = await readPackageJSON('nuxt', { url: path }) if (!pkg.version) { - consola.warn('Cannot find any installed nuxt versions in ', paths) + consola.warn('Cannot find any installed nuxt versions in ', path) } return pkg.version || null } catch { From 196f47f1a829a1f2803759c356c6f907259e8dbe Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Wed, 17 Aug 2022 20:55:02 +1000 Subject: [PATCH 3/4] chore: fallback no longer needed --- packages/nuxi/src/commands/upgrade.ts | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/packages/nuxi/src/commands/upgrade.ts b/packages/nuxi/src/commands/upgrade.ts index d7e4b3772f4..b78ab5a4cc6 100644 --- a/packages/nuxi/src/commands/upgrade.ts +++ b/packages/nuxi/src/commands/upgrade.ts @@ -58,16 +58,7 @@ export default defineNuxtCommand({ await cleanupNuxtDirs(rootDir) // Check installed nuxt version again - let upgradedVersion = await getNuxtVersion(rootDir) - // The above will occasionally fail when running in a non cwd, seems to be a caching issue (fetches last versions module) - if (!upgradedVersion) { - try { - // fallback to fetching version from package.json - upgradedVersion = getNearestPackage(rootDir).devDependencies?.nuxt || '[unknown]' - } catch { - upgradedVersion = '[unknown]' - } - } + let upgradedVersion = await getNuxtVersion(rootDir) || '[unknown]' consola.info('Upgraded nuxt version:', upgradedVersion) if (upgradedVersion === currentVersion) { From 4854d9b13706714043b75bd3d9d982620a986281 Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Wed, 17 Aug 2022 20:55:40 +1000 Subject: [PATCH 4/4] chore: fix artifact --- packages/nuxi/src/commands/upgrade.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/nuxi/src/commands/upgrade.ts b/packages/nuxi/src/commands/upgrade.ts index b78ab5a4cc6..34465f82cf6 100644 --- a/packages/nuxi/src/commands/upgrade.ts +++ b/packages/nuxi/src/commands/upgrade.ts @@ -5,7 +5,6 @@ import { readPackageJSON } from 'pkg-types' import { getPackageManager, packageManagerLocks } from '../utils/packageManagers' import { rmRecursive, touchFile } from '../utils/fs' import { cleanupNuxtDirs } from '../utils/nuxt' -import { getNearestPackage } from '../utils/cjs' import { defineNuxtCommand } from './index' async function getNuxtVersion (path: string): Promise { @@ -58,7 +57,7 @@ export default defineNuxtCommand({ await cleanupNuxtDirs(rootDir) // Check installed nuxt version again - let upgradedVersion = await getNuxtVersion(rootDir) || '[unknown]' + const upgradedVersion = await getNuxtVersion(rootDir) || '[unknown]' consola.info('Upgraded nuxt version:', upgradedVersion) if (upgradedVersion === currentVersion) {