From a01d58d554cce7cc2610863109e7f40e0a8f3875 Mon Sep 17 00:00:00 2001 From: lcc <805383944@qq.com> Date: Tue, 29 Jul 2025 17:57:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0deploy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy.js | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 5 ++- 2 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 deploy.js diff --git a/deploy.js b/deploy.js new file mode 100644 index 0000000..2ffe978 --- /dev/null +++ b/deploy.js @@ -0,0 +1,105 @@ +const { execSync } = require('child_process'); +const path = require('path'); +const fs = require('fs'); + +// 配置目标Git仓库信息 +const config = { + repoUrl: 'http://git2.haodian.cn/xiaoyu/hcb.git', // 目标仓库地址 + branch: 'master', // 目标分支 + distPath: path.resolve(__dirname, './dist'), // 构建产物目录 + // commitMessage: `Auto-deploy at ${new Date().toISOString()}` + commitMessage: `Auto-deploy at ${new Date().toLocaleString('sv-SE')}`, // 提交信息 + gitPath: 'E:\\', //仓库本地保存路径 + dirName: 'hcb' //仓库文件夹名 +}; + +/** + * 同步递归复制目录及其内容(覆盖目标) + * @param {string} source - 源目录路径 + * @param {string} target - 目标目录路径 + */ +function copyDirectorySync(source, target) { + // 检查源路径是否存在 + if (!fs.existsSync(source)) { + throw new Error(`源路径不存在: ${source}`); + } + + // 确保目标目录存在 + if (!fs.existsSync(target)) { + fs.mkdirSync(target, { recursive: true }); + } + + // 读取源目录内容 + const entries = fs.readdirSync(source, { withFileTypes: true }); + + // 处理每个文件/目录 + for (const entry of entries) { + const sourcePath = path.join(source, entry.name); + const targetPath = path.join(target, entry.name); + + if (entry.isDirectory()) { + // 递归复制子目录 + copyDirectorySync(sourcePath, targetPath); + } else { + // 复制文件(覆盖现有文件) + fs.copyFileSync(sourcePath, targetPath); + } + } +} +// try { +// const sourceDir = './dist'; +// const targetDir = 'E:\\pinan_dist'; +// +// copyDirectorySync(sourceDir, targetDir); +// console.log('复制完成!'); +// } catch (err) { +// console.error('复制过程中出错:', err); +// } +// process.exit(0); +try { + // 检查dist目录是否存在 + if (!fs.existsSync(config.distPath)) { + throw new Error('dist目录不存在,请先执行构建命令'); + } + const gitRealPath = path.join(config.gitPath, config.dirName); + console.log('仓库本地路径:', gitRealPath); + if (!fs.existsSync(config.gitPath)) { + console.log('创建git仓库目录'); + fs.mkdirSync(config.gitPath, { recursive: true }); + } + if (!fs.existsSync(path.join(gitRealPath, '.git'))) { + console.log('初始化git仓库'); + process.chdir(config.gitPath); + execSync( + `git clone --single-branch -b master ${config.repoUrl} ${config.dirName}` + ); + } + if (!fs.existsSync(path.join(gitRealPath, '.git'))) { + throw new Error('仓库初始化失败,请检查仓库路径是否正确'); + } + process.chdir(gitRealPath); + console.log('更新仓库'); + execSync(`git pull --rebase origin ${config.branch}`); + //同步递归复制 + copyDirectorySync(config.distPath, gitRealPath); + console.log(`${config.distPath} 复制到 ${gitRealPath}`); + // process.chdir(config.distPath); + // 添加所有文件 + execSync('git add .'); + // 提交更改 + try { + execSync(`git commit -m "${config.commitMessage}"`); + } catch (e) { + console.log(e); + console.log('没有需要提交的更改'); + process.exit(0); + } + // 推送到目标仓库 + execSync(`git push origin ${config.branch}`); + + console.log('推送仓库成功!'); + process.exit(0); +} catch (error) { + console.error('推送仓库失败:', error.message); + process.exit(1); +} diff --git a/package.json b/package.json index 0eec27c..ad4e642 100644 --- a/package.json +++ b/package.json @@ -2,11 +2,12 @@ "name": "pinganbroker", "private": true, "version": "0.0.0", - "type": "module", "scripts": { "dev": "vite", "build": "vite build", - "preview": "vite preview" + "preview": "vite preview", + "build:deploy": "vite build && node deploy.js", + "deploy": "node deploy.js" }, "dependencies": { "@vant/area-data": "^2.0.0",