pipeline { agent any tools { nodejs 'NodeJS18' // 使用NodeJS18版本 } environment { UNIAPP_DIR = 'java-mall-app-shop-admin' TARGET_PLATFORM = 'h5' OUTPUT_DIR = "${UNIAPP_DIR}/dist/build/${TARGET_PLATFORM}" DEPLOY_PATH = '/data/nginx/www/demo' } stages { stage('拉取代码') { steps { checkout scm } } stage('安装完整依赖(含UniApp插件)') { steps { sh """ cd ${UNIAPP_DIR} || { echo "错误:项目目录不存在!" exit 1 } # 清理旧依赖 rm -rf node_modules package-lock.json # 设置镜像源 npm config set registry https://registry.npmmirror.com # 安装项目基础依赖 npm install # 关键:安装UniApp核心打包插件(解决uni-build不存在问题) npm install @dcloudio/vue-cli-plugin-uni@latest --save-dev # 安装Vue CLI服务(确保vue-cli-service可用) npm install @vue/cli-service@5.0.8 --save-dev """ } } stage('UniApp打包构建') { steps { sh """ cd ${UNIAPP_DIR} # 验证依赖是否安装成功 echo "检查uni-build命令是否存在..." npx vue-cli-service help | grep uni-build || { echo "错误:uni-build命令仍不存在,依赖安装失败!" exit 1 } # 执行打包 npx vue-cli-service uni-build \ --mode production \ --platform ${TARGET_PLATFORM} # 验证输出 if [ ! -d "${OUTPUT_DIR}" ]; then echo "打包失败,未生成输出目录!" exit 1 fi """ } } stage('部署到服务器') { steps { sh """ mkdir -p ${DEPLOY_PATH} cp -r ${OUTPUT_DIR}/* ${DEPLOY_PATH}/ echo "部署成功!" """ } } } post { success { echo "打包部署成功" } failure { echo "打包部署失败" } } }