全新popiart网站 react项目重构
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

96 lines
1.7 KiB

#!/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/"
rm -f "$OUTPUT_ZIP"
(
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