const fs = require('fs-extra'); const path = require('path'); const { copyFile, distDir, customerList, moveProjectsToBakDir, logError, restoreProjectDir } = require('./helper'); const { execSync } = require('child_process'); if (customerList?.length !== 1) { logError(`请正确使用命令 “npm run build customer”(目前只支持一次部署一个)`); process.exit(1); // 退出脚本 } // 删除其余项目文件 moveProjectsToBakDir('npm run build'); try { copyFile('npm run build'); } catch (error) { // 报错时要恢复其余项目文件 restoreProjectDir(); throw error; } try { execSync('vite build', { stdio: 'inherit' }); } catch (error) {}finally{ // 构建完成之后,恢复项目文件夹 restoreProjectDir(); } //#region ====================== 修改 dist 文件中 index.html 中的引入 js 的 v 值 ====================== const htmlFile = path.join(distDir, 'index.html'); // 读取 index.html 文件内容 fs.readFile(htmlFile, 'utf8', (err, data) => { if (err) { console.error(chalk.red(`读取“${htmlFile}”失败:`, err)); return; } // 替换为新的 v 值 const currentStamp = new Date().getTime() + ''; const newData = data.replace(/(?<=\/static\/config\/.*.js\?v=).*(?=")/g, currentStamp); // 将修改后的内容写回 index.html 文件 fs.writeFile(htmlFile, newData, 'utf8', (err) => { if (err) { console.error(chalk.red(`修改“${htmlFile}”中的 v 值失败:`, err)); return; } }); }); //#endregion