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
This commit is contained in:
Shahed Nasser
2026-01-06 16:40:54 +02:00
committed by GitHub
parent 60f68ff492
commit b300a93345
4 changed files with 20 additions and 5 deletions

View File

@@ -0,0 +1,5 @@
---
"create-medusa-app": patch
---
fix(create-medusa-app): fix version option not working with Next.js storefront

View File

@@ -5,9 +5,10 @@ import { logger } from "./logger.js"
type LogOptions = { type LogOptions = {
message: string message: string
type?: "error" | "success" | "info" | "warn" | "verbose" type?: "error" | "success" | "info" | "warn" | "verbose"
stack?: string
} }
export default ({ message, type = "info" }: LogOptions) => { export default ({ message, type = "info", stack }: LogOptions) => {
switch (type) { switch (type) {
case "info": case "info":
logger.info(chalk.white(message)) logger.info(chalk.white(message))
@@ -22,6 +23,6 @@ export default ({ message, type = "info" }: LogOptions) => {
logger.info(`${chalk.bgYellowBright("VERBOSE LOG:")} ${message}`) logger.info(`${chalk.bgYellowBright("VERBOSE LOG:")} ${message}`)
break break
case "error": case "error":
program.error(chalk.bold.red(message)) program.error(chalk.bold.red(message.trim() + (stack || "")))
} }
} }

View File

@@ -204,15 +204,18 @@ export class MedusaProjectCreator
}) })
} }
private handleError(e: any): void { private handleError(e: Error): void {
if (isAbortError(e)) { if (isAbortError(e)) {
process.exit() process.exit()
} }
const showStack = e.message.includes("npm") || e.message.includes("yarn")
this.spinner.stop() this.spinner.stop()
logMessage({ logMessage({
message: `An error occurred: ${e}`, message: `An error occurred: ${e}`,
type: "error", type: "error",
stack: showStack ? e.stack?.replace(e.toString(), "") : "",
}) })
} }

View File

@@ -12,14 +12,14 @@ export function updatePackageVersions(
if (packageJson.dependencies) { if (packageJson.dependencies) {
for (const dependency of Object.keys(packageJson.dependencies)) { for (const dependency of Object.keys(packageJson.dependencies)) {
if (dependency.startsWith("@medusajs/")) { if (shouldUpdateVersion(dependency)) {
packageJson.dependencies[dependency] = version packageJson.dependencies[dependency] = version
} }
} }
} }
if (packageJson.devDependencies) { if (packageJson.devDependencies) {
for (const dependency of Object.keys(packageJson.devDependencies)) { for (const dependency of Object.keys(packageJson.devDependencies)) {
if (dependency.startsWith("@medusajs/")) { if (shouldUpdateVersion(dependency)) {
packageJson.devDependencies[dependency] = version packageJson.devDependencies[dependency] = version
} }
} }
@@ -29,3 +29,9 @@ export function updatePackageVersions(
writeFileSync(packageJsonOrPath, JSON.stringify(packageJson, null, 2)) 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"
}