#!/bin/bash set -u SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" DIST_DIR="$SCRIPT_DIR/dist" PACKAGE_NAME="popiart-website-new" OUTPUT_ZIP="$SCRIPT_DIR/$PACKAGE_NAME.zip" TMP_DIR="$(mktemp -d)" export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" if [ -s "$HOME/.nvm/nvm.sh" ]; then . "$HOME/.nvm/nvm.sh" fi cleanup() { if [ -n "${TMP_DIR:-}" ] && [ -d "$TMP_DIR" ]; then rm -rf "$TMP_DIR" fi } pause_before_exit() { echo read -r -p "按回车键关闭窗口..." } close_after_success() { echo echo "3 秒后自动关闭窗口..." sleep 3 } trap cleanup EXIT echo "开始打包 dist..." echo "项目目录: $SCRIPT_DIR" cd "$SCRIPT_DIR" || { echo "错误: 无法进入项目目录。" pause_before_exit exit 1 } if ! command -v npm >/dev/null 2>&1; then echo "错误: 没有找到 npm,请先确认 Node.js 已安装。" pause_before_exit exit 1 fi echo echo "正在执行 npm run build:prod..." npm run build:prod if [ $? -ne 0 ]; then echo "错误: build:prod 执行失败,已停止打包。" pause_before_exit exit 1 fi if [ ! -d "$DIST_DIR" ]; then echo "错误: build 完成后没有找到 dist 目录。" pause_before_exit exit 1 fi echo echo "正在打包新的 dist..." if ! command -v zip >/dev/null 2>&1; then echo "错误: 当前系统没有找到 zip 命令。" pause_before_exit exit 1 fi mkdir "$TMP_DIR/$PACKAGE_NAME" cp -R "$DIST_DIR/." "$TMP_DIR/$PACKAGE_NAME/" ( cd "$TMP_DIR" || exit 1 zip -qry -X "$OUTPUT_ZIP" "$PACKAGE_NAME" -x "*/.DS_Store" "__MACOSX/*" ) if [ $? -ne 0 ]; then echo "错误: 打包失败。" pause_before_exit exit 1 fi echo "打包完成:" echo "$OUTPUT_ZIP" echo ls -lh "$OUTPUT_ZIP" close_after_success