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.
95 lines
1.7 KiB
95 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/"
|
|
|
|
(
|
|
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
|
|
|