From bdda97a4704a31e95e564e55adfcbc8cbe4e295a Mon Sep 17 00:00:00 2001 From: Adrien Rault <3526123+rault-a@users.noreply.github.com> Date: Fri, 24 May 2024 00:46:53 +0200 Subject: [PATCH] fix: yarn berry support (#4586) --- commands/add.ts | 6 +++--- commands/build.ts | 2 +- modules/ace/codemods.ts | 1 + package.json | 2 +- tests/commands/add.spec.ts | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/commands/add.ts b/commands/add.ts index b9dacb01..25018e50 100644 --- a/commands/add.ts +++ b/commands/add.ts @@ -30,7 +30,7 @@ export default class Add extends BaseCommand { declare verbose?: boolean @flags.string({ description: 'Select the package manager you want to use' }) - declare packageManager?: 'npm' | 'pnpm' | 'yarn' + declare packageManager?: 'npm' | 'pnpm' | 'yarn' | 'yarn@berry' @flags.boolean({ description: 'Should we install the package as a dev dependency', alias: 'D' }) declare dev?: boolean @@ -45,8 +45,8 @@ export default class Add extends BaseCommand { const pkgManager = this.packageManager || (await detectPackageManager(this.app.makePath())) || 'npm' - if (['npm', 'pnpm', 'yarn'].includes(pkgManager)) { - return pkgManager as 'npm' | 'pnpm' | 'yarn' + if (['npm', 'pnpm', 'yarn', 'yarn@berry'].includes(pkgManager)) { + return pkgManager as 'npm' | 'pnpm' | 'yarn' | 'yarn@berry' } throw new Error('Invalid package manager. Must be one of npm, pnpm or yarn') diff --git a/commands/build.ts b/commands/build.ts index a90c85b2..fff5dc36 100644 --- a/commands/build.ts +++ b/commands/build.ts @@ -38,7 +38,7 @@ export default class Build extends BaseCommand { @flags.string({ description: 'Define the package manager to copy the appropriate lock file', }) - declare packageManager?: 'npm' | 'pnpm' | 'yarn' | 'bun' + declare packageManager?: 'npm' | 'pnpm' | 'yarn' | 'yarn@berry' | 'bun' @flags.boolean({ description: 'Build frontend assets', diff --git a/modules/ace/codemods.ts b/modules/ace/codemods.ts index 08b83164..3dcd30b8 100644 --- a/modules/ace/codemods.ts +++ b/modules/ace/codemods.ts @@ -89,6 +89,7 @@ export class Codemods extends EventEmitter { switch (packageManager) { case 'yarn': + case 'yarn@berry': return `${colors.yellow(`yarn add${devFlag}`)} ${packages.join(' ')}` case 'pnpm': return `${colors.yellow(`pnpm add${devFlag}`)} ${packages.join(' ')}` diff --git a/package.json b/package.json index 71ec8eb2..9234a9ec 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "index:commands": "node --loader=ts-node/esm toolkit/main.js index build/commands" }, "devDependencies": { - "@adonisjs/assembler": "^7.5.1", + "@adonisjs/assembler": "^7.6.1", "@adonisjs/eslint-config": "^1.3.0", "@adonisjs/prettier-config": "^1.3.0", "@adonisjs/tsconfig": "^1.3.0", diff --git a/tests/commands/add.spec.ts b/tests/commands/add.spec.ts index e6621d34..ab8590f1 100644 --- a/tests/commands/add.spec.ts +++ b/tests/commands/add.spec.ts @@ -21,7 +21,7 @@ const VERBOSE = !!process.env.CI /** * Setup a fake adonis project in the file system */ -async function setupProject(fs: FileSystem, pkgManager?: 'npm' | 'pnpm' | 'yarn') { +async function setupProject(fs: FileSystem, pkgManager?: 'npm' | 'pnpm' | 'yarn' | 'yarn@berry') { await fs.create( 'package.json', JSON.stringify({ type: 'module', name: 'test', dependencies: {} }) @@ -29,7 +29,7 @@ async function setupProject(fs: FileSystem, pkgManager?: 'npm' | 'pnpm' | 'yarn' if (pkgManager === 'pnpm') { await fs.create('pnpm-lock.yaml', '') - } else if (pkgManager === 'yarn') { + } else if (pkgManager === 'yarn' || pkgManager === 'yarn@berry') { await fs.create('yarn.lock', '') } else { await fs.create('package-lock.json', '')