From 36c0412e2504041a23223b2fbbe9b4eedeb622f1 Mon Sep 17 00:00:00 2001 From: Damian Glowala Date: Thu, 30 Oct 2025 20:00:43 +0100 Subject: [PATCH 1/6] fix: allow adding module to pnpm workspace root --- packages/nuxi/src/commands/module/add.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/nuxi/src/commands/module/add.ts b/packages/nuxi/src/commands/module/add.ts index 8a5da6779..fa3858d3d 100644 --- a/packages/nuxi/src/commands/module/add.ts +++ b/packages/nuxi/src/commands/module/add.ts @@ -3,6 +3,7 @@ import type { PackageJson } from 'pkg-types' import type { NuxtModule } from './_utils' import * as fs from 'node:fs' +import { existsSync } from 'node:fs' import { homedir } from 'node:os' import { join } from 'node:path' @@ -10,7 +11,7 @@ import process from 'node:process' import { updateConfig } from 'c12/update' import { defineCommand } from 'citty' import { colors } from 'consola/utils' -import { addDependency } from 'nypm' +import { addDependency, detectPackageManager } from 'nypm' import { $fetch } from 'ofetch' import { resolve } from 'pathe' import { readPackageJSON } from 'pkg-types' @@ -136,10 +137,13 @@ async function addModules(modules: ResolvedModule[], { skipInstall, skipConfig, const a = notInstalledModules.length > 1 ? '' : ' a' logger.info(`Installing \`${notInstalledModulesList}\` as${a}${isDev ? ' development' : ''} ${dependency}`) + const packageManager = await detectPackageManager(cwd) + const res = await addDependency(notInstalledModules.map(module => module.pkg), { cwd, dev: isDev, installPeerDependencies: true, + workspace: packageManager?.name === 'pnpm' && existsSync(resolve(cwd, 'pnpm-workspace.yaml')), }).then(() => true).catch( (error) => { logger.error(error) From 98f6a811026640c944eb008374096cce6145a25d Mon Sep 17 00:00:00 2001 From: Damian Glowala Date: Thu, 30 Oct 2025 20:22:37 +0100 Subject: [PATCH 2/6] include `upgrade` command --- packages/nuxi/src/commands/upgrade.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nuxi/src/commands/upgrade.ts b/packages/nuxi/src/commands/upgrade.ts index 73855b3cd..cc7915efb 100644 --- a/packages/nuxi/src/commands/upgrade.ts +++ b/packages/nuxi/src/commands/upgrade.ts @@ -172,6 +172,7 @@ export default defineCommand({ cwd, packageManager, dev: nuxtDependencyType === 'devDependencies', + workspace: packageManager?.name === 'pnpm' && existsSync(resolve(cwd, 'pnpm-workspace.yaml')), }) if (method === 'force') { From 63e52c30fd074f713f2ebfb49d9199a06356c311 Mon Sep 17 00:00:00 2001 From: Damian Glowala Date: Thu, 30 Oct 2025 21:07:07 +0100 Subject: [PATCH 3/6] update test --- packages/nuxi/test/unit/commands/module/add.spec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/nuxi/test/unit/commands/module/add.spec.ts b/packages/nuxi/test/unit/commands/module/add.spec.ts index 09a31ef34..1c599a515 100644 --- a/packages/nuxi/test/unit/commands/module/add.spec.ts +++ b/packages/nuxi/test/unit/commands/module/add.spec.ts @@ -7,6 +7,7 @@ import * as versions from '../../../../src/utils/versions' const updateConfig = vi.fn(() => Promise.resolve()) const addDependency = vi.fn(() => Promise.resolve()) +const detectPackageManager = vi.fn(() => Promise.resolve()) let v3 = '3.0.0' interface CommandsType { subCommands: { @@ -23,6 +24,7 @@ function applyMocks() { vi.mock('nypm', async () => { return { addDependency, + detectPackageManager, } }) vi.mock('pkg-types', async () => { From 8d8b1bd3bbfd4f4c3376f01e8099429313981c74 Mon Sep 17 00:00:00 2001 From: Damian Glowala Date: Thu, 30 Oct 2025 21:28:36 +0100 Subject: [PATCH 4/6] update test --- packages/nuxi/test/unit/commands/module/add.spec.ts | 6 +++++- 1 file changed, 5 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 1c599a515..f9c1b15d7 100644 --- a/packages/nuxi/test/unit/commands/module/add.spec.ts +++ b/packages/nuxi/test/unit/commands/module/add.spec.ts @@ -7,7 +7,7 @@ import * as versions from '../../../../src/utils/versions' const updateConfig = vi.fn(() => Promise.resolve()) const addDependency = vi.fn(() => Promise.resolve()) -const detectPackageManager = vi.fn(() => Promise.resolve()) +const detectPackageManager = vi.fn(() => Promise.resolve({ name: 'npm' })) let v3 = '3.0.0' interface CommandsType { subCommands: { @@ -124,6 +124,7 @@ describe('module add', () => { cwd: '/fake-dir', dev: true, installPeerDependencies: true, + workspace: false, }) }) @@ -140,6 +141,7 @@ describe('module add', () => { cwd: '/fake-dir', dev: true, installPeerDependencies: true, + workspace: false, }) }) @@ -156,6 +158,7 @@ describe('module add', () => { cwd: '/fake-dir', dev: true, installPeerDependencies: true, + workspace: false, }) }) @@ -172,6 +175,7 @@ describe('module add', () => { cwd: '/fake-dir', dev: true, installPeerDependencies: true, + workspace: false, }) }) }) From 0b2681c928b5643935f117c63baa7d38ccbd81c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20G=C5=82owala?= Date: Fri, 31 Oct 2025 12:15:16 +0100 Subject: [PATCH 5/6] pass package manager to `addDependency` --- packages/nuxi/src/commands/module/add.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nuxi/src/commands/module/add.ts b/packages/nuxi/src/commands/module/add.ts index fa3858d3d..3dabe609a 100644 --- a/packages/nuxi/src/commands/module/add.ts +++ b/packages/nuxi/src/commands/module/add.ts @@ -143,6 +143,7 @@ async function addModules(modules: ResolvedModule[], { skipInstall, skipConfig, cwd, dev: isDev, installPeerDependencies: true, + packageManager, workspace: packageManager?.name === 'pnpm' && existsSync(resolve(cwd, 'pnpm-workspace.yaml')), }).then(() => true).catch( (error) => { From c88e5cd3ed4f88ba7691ee7a9dd2672883c88f6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20G=C5=82owala?= Date: Fri, 31 Oct 2025 12:18:30 +0100 Subject: [PATCH 6/6] update test --- packages/nuxi/test/unit/commands/module/add.spec.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/nuxi/test/unit/commands/module/add.spec.ts b/packages/nuxi/test/unit/commands/module/add.spec.ts index f9c1b15d7..0806672fa 100644 --- a/packages/nuxi/test/unit/commands/module/add.spec.ts +++ b/packages/nuxi/test/unit/commands/module/add.spec.ts @@ -124,6 +124,9 @@ describe('module add', () => { cwd: '/fake-dir', dev: true, installPeerDependencies: true, + packageManager: { + name: 'npm', + }, workspace: false, }) }) @@ -141,6 +144,9 @@ describe('module add', () => { cwd: '/fake-dir', dev: true, installPeerDependencies: true, + packageManager: { + name: 'npm', + }, workspace: false, }) }) @@ -158,6 +164,9 @@ describe('module add', () => { cwd: '/fake-dir', dev: true, installPeerDependencies: true, + packageManager: { + name: 'npm', + }, workspace: false, }) }) @@ -175,6 +184,9 @@ describe('module add', () => { cwd: '/fake-dir', dev: true, installPeerDependencies: true, + packageManager: { + name: 'npm', + }, workspace: false, }) })