Files
platforms/scripts/build-frontend.sh

100 lines
2.1 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
set -Eeuo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
OUTPUT_ROOT="${PROJECT_ROOT}/output"
require_command() {
local command_name="$1"
if ! command -v "${command_name}" >/dev/null 2>&1; then
echo "缺少命令:${command_name}" >&2
exit 1
fi
}
build_project() {
local project_name="$1"
local project_dir="$2"
local package_manager="$3"
local build_output_dir="$4"
local output_name="$5"
local target_dir="${OUTPUT_ROOT}/${output_name}"
if [[ ! -f "${project_dir}/package.json" ]]; then
echo "未找到 ${project_name} 的 package.json${project_dir}" >&2
exit 1
fi
echo
echo "开始构建:${project_name}"
(
cd "${project_dir}"
case "${package_manager}" in
pnpm)
2026-07-31 15:34:05 +08:00
pnpm i
pnpm build
;;
npm)
2026-07-31 15:34:05 +08:00
npm i
npm run build
;;
*)
echo "不支持的包管理器:${package_manager}" >&2
exit 1
;;
esac
)
echo "构建完成:${project_name}"
if [[ ! -d "${project_dir}/${build_output_dir}" ]]; then
echo "${project_name} 构建产物不存在:${project_dir}/${build_output_dir}" >&2
exit 1
fi
if [[ "${target_dir}" != "${OUTPUT_ROOT}/"* ]]; then
echo "拒绝清理非预期输出目录:${target_dir}" >&2
exit 1
fi
rm -rf "${target_dir}"
mkdir -p "${target_dir}"
cp -R "${project_dir}/${build_output_dir}/." "${target_dir}/"
echo "产物已汇总:${target_dir}"
}
require_command pnpm
require_command npm
mkdir -p "${OUTPUT_ROOT}"
build_project \
"平台总后台" \
"${PROJECT_ROOT}/frontend/platform_admin" \
pnpm \
dist \
platform
build_project \
"气站管理后台" \
"${PROJECT_ROOT}/frontend/gas_admin" \
pnpm \
dist \
gas
build_project \
"配送点管理后台" \
"${PROJECT_ROOT}/frontend/delivery_admin" \
pnpm \
dist \
delivery
build_project \
"和气门户首页" \
"${PROJECT_ROOT}/frontend/site" \
npm \
dist/client \
site
echo
echo "四个前端项目全部构建完成,产物目录:${OUTPUT_ROOT}"