{"version":3,"file":"build.mjs","sources":["../../../src/node/build.ts"],"sourcesContent":["import * as tsUtils from '@strapi/typescript-utils';\nimport type { CLIContext } from '../cli/types';\nimport { handleAdminDependencies } from './core/ensure-admin-dependencies';\nimport { getTimer, prettyTime } from './core/timer';\nimport { createBuildContext } from './create-build-context';\nimport { writeStaticClientFiles } from './staticFiles';\n\ninterface BuildOptions extends CLIContext {\n  /**\n   * Which bundler to use for building.\n   *\n   * @default webpack\n   */\n  bundler?: 'webpack' | 'vite';\n  /**\n   * Minify the output\n   *\n   * @default true\n   */\n  minify?: boolean;\n  /**\n   * Generate sourcemaps – useful for debugging bugs in the admin panel UI.\n   */\n  sourcemaps?: boolean;\n  /**\n   * Print stats for build\n   */\n  stats?: boolean;\n  /**\n   * Auto-install missing admin dependencies\n   *\n   * @default false\n   */\n  installDeps?: boolean;\n}\n\n/**\n * @example `$ strapi build`\n *\n * @description Builds the admin panel of the strapi application.\n */\nconst build = async ({ logger, cwd, tsconfig, installDeps = false, ...options }: BuildOptions) => {\n  const timer = getTimer();\n\n  const shouldContinue = await handleAdminDependencies({\n    cwd,\n    logger,\n    installIfMissing: installDeps,\n  });\n\n  if (!shouldContinue) {\n    return;\n  }\n\n  if (tsconfig?.config) {\n    timer.start('compilingTS');\n    const compilingTsSpinner = logger.spinner(`Compiling TS`).start();\n\n    try {\n      await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: false } });\n    } catch {\n      // Match previous compiler behavior (process.exit inside basic.run).\n      process.exit(1);\n    }\n\n    const compilingDuration = timer.end('compilingTS');\n    compilingTsSpinner.text = `Compiling TS (${prettyTime(compilingDuration)})`;\n    compilingTsSpinner.succeed();\n  }\n\n  timer.start('createBuildContext');\n  const contextSpinner = logger.spinner(`Building build context`).start();\n  console.log('');\n\n  const ctx = await createBuildContext({\n    cwd,\n    logger,\n    tsconfig,\n    options,\n  });\n\n  const contextDuration = timer.end('createBuildContext');\n  contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n  contextSpinner.succeed();\n\n  timer.start('buildAdmin');\n  const buildingSpinner = logger.spinner(`Building admin panel`).start();\n  console.log('');\n\n  try {\n    await writeStaticClientFiles(ctx);\n\n    if (ctx.bundler === 'webpack') {\n      const { build: buildWebpack } = await import('./webpack/build');\n      await buildWebpack(ctx);\n    } else if (ctx.bundler === 'vite') {\n      const { build: buildVite } = await import('./vite/build');\n      await buildVite(ctx);\n    }\n\n    const buildDuration = timer.end('buildAdmin');\n    buildingSpinner.text = `Building admin panel (${prettyTime(buildDuration)})`;\n    buildingSpinner.succeed();\n  } catch (err) {\n    buildingSpinner.fail();\n    throw err;\n  }\n};\n\nexport { build };\nexport type { BuildOptions };\n"],"names":["build","logger","cwd","tsconfig","installDeps","options","timer","getTimer","shouldContinue","handleAdminDependencies","installIfMissing","config","start","compilingTsSpinner","spinner","tsUtils","compile","configOptions","ignoreDiagnostics","process","exit","compilingDuration","end","text","prettyTime","succeed","contextSpinner","console","log","ctx","createBuildContext","contextDuration","buildingSpinner","writeStaticClientFiles","bundler","buildWebpack","buildVite","buildDuration","err","fail"],"mappings":"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"}