diff --git a/.gitignore b/.gitignore index f7e7fad..0d7a819 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ builds .builds bin out +output/ target release debug diff --git a/scripts/build-frontend.sh b/scripts/build-frontend.sh index 4a01d2a..17b3342 100755 --- a/scripts/build-frontend.sh +++ b/scripts/build-frontend.sh @@ -4,6 +4,7 @@ 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" @@ -18,6 +19,9 @@ 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 @@ -47,15 +51,52 @@ build_project() { 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 -build_project "平台总后台" "${PROJECT_ROOT}/frontend/platform_admin" pnpm -build_project "气站管理后台" "${PROJECT_ROOT}/frontend/gas_admin" pnpm -build_project "配送点管理后台" "${PROJECT_ROOT}/frontend/delivery_admin" pnpm -build_project "和气门户首页" "${PROJECT_ROOT}/frontend/site" 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 "四个前端项目全部构建完成。" +echo "四个前端项目全部构建完成,产物目录:${OUTPUT_ROOT}"