From b300a9334584d5b373d6b1879d715e9ebd9050db Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Tue, 6 Jan 2026 16:40:54 +0200 Subject: [PATCH] fix(create-medusa-app): fix version option not working with Next.js storefront (#14462) 1. Fix error when passing `--version` and installing Next.js storefront. The error is because the UI package doesn't follow the same versioning as other Medusa packages, so this will skip updating the version of the UI package. 2. Other: added error logging for installation errors --- .changeset/fifty-parrots-appear.md | 5 +++++ .../cli/create-medusa-app/src/utils/log-message.ts | 5 +++-- .../utils/project-creator/medusa-project-creator.ts | 5 ++++- .../src/utils/update-package-versions.ts | 10 ++++++++-- 4 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 .changeset/fifty-parrots-appear.md diff --git a/.changeset/fifty-parrots-appear.md b/.changeset/fifty-parrots-appear.md new file mode 100644 index 0000000000..825407db18 --- /dev/null +++ b/.changeset/fifty-parrots-appear.md @@ -0,0 +1,5 @@ +--- +"create-medusa-app": patch +--- + +fix(create-medusa-app): fix version option not working with Next.js storefront diff --git a/packages/cli/create-medusa-app/src/utils/log-message.ts b/packages/cli/create-medusa-app/src/utils/log-message.ts index b91fa99e03..f44562bc06 100644 --- a/packages/cli/create-medusa-app/src/utils/log-message.ts +++ b/packages/cli/create-medusa-app/src/utils/log-message.ts @@ -5,9 +5,10 @@ import { logger } from "./logger.js" type LogOptions = { message: string type?: "error" | "success" | "info" | "warn" | "verbose" + stack?: string } -export default ({ message, type = "info" }: LogOptions) => { +export default ({ message, type = "info", stack }: LogOptions) => { switch (type) { case "info": logger.info(chalk.white(message)) @@ -22,6 +23,6 @@ export default ({ message, type = "info" }: LogOptions) => { logger.info(`${chalk.bgYellowBright("VERBOSE LOG:")} ${message}`) break case "error": - program.error(chalk.bold.red(message)) + program.error(chalk.bold.red(message.trim() + (stack || ""))) } } diff --git a/packages/cli/create-medusa-app/src/utils/project-creator/medusa-project-creator.ts b/packages/cli/create-medusa-app/src/utils/project-creator/medusa-project-creator.ts index 9a2bc7af00..f1571cdfb8 100644 --- a/packages/cli/create-medusa-app/src/utils/project-creator/medusa-project-creator.ts +++ b/packages/cli/create-medusa-app/src/utils/project-creator/medusa-project-creator.ts @@ -204,15 +204,18 @@ export class MedusaProjectCreator }) } - private handleError(e: any): void { + private handleError(e: Error): void { if (isAbortError(e)) { process.exit() } + const showStack = e.message.includes("npm") || e.message.includes("yarn") + this.spinner.stop() logMessage({ message: `An error occurred: ${e}`, type: "error", + stack: showStack ? e.stack?.replace(e.toString(), "") : "", }) } diff --git a/packages/cli/create-medusa-app/src/utils/update-package-versions.ts b/packages/cli/create-medusa-app/src/utils/update-package-versions.ts index f822480f7d..d13ec3e5ee 100644 --- a/packages/cli/create-medusa-app/src/utils/update-package-versions.ts +++ b/packages/cli/create-medusa-app/src/utils/update-package-versions.ts @@ -12,14 +12,14 @@ export function updatePackageVersions( if (packageJson.dependencies) { for (const dependency of Object.keys(packageJson.dependencies)) { - if (dependency.startsWith("@medusajs/")) { + if (shouldUpdateVersion(dependency)) { packageJson.dependencies[dependency] = version } } } if (packageJson.devDependencies) { for (const dependency of Object.keys(packageJson.devDependencies)) { - if (dependency.startsWith("@medusajs/")) { + if (shouldUpdateVersion(dependency)) { packageJson.devDependencies[dependency] = version } } @@ -29,3 +29,9 @@ export function updatePackageVersions( writeFileSync(packageJsonOrPath, JSON.stringify(packageJson, null, 2)) } } + +function shouldUpdateVersion(dependency: string): boolean { + // UI package follows different versioning, so we can't update it following + // the same logic as other Medusa packages + return dependency.startsWith("@medusajs/") && dependency !== "@medusajs/ui" +} \ No newline at end of file