fix: exit process with a status code when build fails (#11206)

Fixes: FRMW-2897
CLOSES CLO-434

Still need the frontend Admin bundler to provide some way to know if the build has failed or not.
This commit is contained in:
Harminder Virk
2025-01-29 14:04:47 +05:30
committed by GitHub
parent 1e6f47d662
commit 716de2cb3a
4 changed files with 37 additions and 23 deletions

View File

@@ -0,0 +1,6 @@
---
"@medusajs/medusa": patch
"@medusajs/framework": patch
---
fix: exit process with a status code when build fails

View File

@@ -315,12 +315,12 @@ export class Compiler {
this.#logger.warn(
`Backend build completed with errors (${tracker.getSeconds()}s)`
)
} else {
this.#logger.info(
`Backend build completed successfully (${tracker.getSeconds()}s)`
)
return false
}
this.#logger.info(
`Backend build completed successfully (${tracker.getSeconds()}s)`
)
return true
}
@@ -359,7 +359,7 @@ export class Compiler {
this.#logger.info(
"Skipping admin build, since its disabled inside the medusa-config file"
)
return false
return true
}
/**
@@ -435,12 +435,12 @@ export class Compiler {
this.#logger.warn(
`Plugin build completed with errors (${tracker.getSeconds()}s)`
)
} else {
this.#logger.info(
`Plugin build completed successfully (${tracker.getSeconds()}s)`
)
return false
}
this.#logger.info(
`Plugin build completed successfully (${tracker.getSeconds()}s)`
)
return true
}

View File

@@ -7,23 +7,28 @@ export default async function build({
}: {
directory: string
adminOnly: boolean
}): Promise<boolean> {
}) {
logger.info("Starting build...")
const compiler = new Compiler(directory, logger)
const tsConfig = await compiler.loadTSConfigFile()
if (!tsConfig) {
logger.error("Unable to compile application")
return false
process.exit(1)
}
const promises: Promise<any>[] = []
const promises: Promise<boolean>[] = []
if (!adminOnly) {
promises.push(compiler.buildAppBackend(tsConfig))
}
const bundler = await import("@medusajs/admin-bundler")
promises.push(compiler.buildAppFrontend(adminOnly, tsConfig, bundler))
await Promise.all(promises)
return true
const responses = await Promise.all(promises)
if (responses.every((response) => response === true)) {
process.exit(0)
} else {
process.exit(1)
}
}

View File

@@ -1,21 +1,24 @@
import { Compiler } from "@medusajs/framework/build-tools"
import { logger } from "@medusajs/framework/logger"
export default async function build({
directory,
}: {
directory: string
}): Promise<boolean> {
export default async function build({ directory }: { directory: string }) {
logger.info("Starting build...")
const compiler = new Compiler(directory, logger)
const tsConfig = await compiler.loadTSConfigFile()
if (!tsConfig) {
logger.error("Unable to compile plugin")
return false
process.exit(1)
}
const bundler = await import("@medusajs/admin-bundler")
await compiler.buildPluginBackend(tsConfig)
await compiler.buildPluginAdminExtensions(bundler)
return true
const responses = await Promise.all([
compiler.buildPluginBackend(tsConfig),
compiler.buildPluginAdminExtensions(bundler),
])
if (responses.every((response) => response === true)) {
process.exit(0)
} else {
process.exit(1)
}
}