const fs = require('fs') const path = require('path') const root = path.resolve(__dirname, '../..') const desk = path.join(process.env.USERPROFILE, 'Desktop') const out = path.join(desk, '松江农民退养补贴-部署包-20261012') const fe = path.join(out, 'frontend') const be = path.join(out, 'backend') fs.mkdirSync(be, { recursive: true }) fs.copyFileSync( path.join(root, 'sj_nmtybt_server/target/sjnmtybt.war'), path.join(be, 'sjnmtybt.war'), ) function copyDir(src, dest) { fs.mkdirSync(dest, { recursive: true }) for (const name of fs.readdirSync(src)) { const s = path.join(src, name) const d = path.join(dest, name) if (fs.statSync(s).isDirectory()) copyDir(s, d) else fs.copyFileSync(s, d) } } copyDir(path.join(root, 'sj_tdtybz/dist'), fe) const note = [ '松江农民退养补贴 部署包 2026-10-12', '', '目录', ' frontend/ 前端静态资源,覆盖 2130 站点根目录', ' backend/sjnmtybt.war 后端,放入 Tomcat webapps', '', '线上位置(与上次一致)', ' 前端页面:http://121.43.55.7:2130/', ' 前端配置:http://121.43.55.7:2130/config/config.js', ' 后端接口:http://121.43.55.7:11091/sjnmtybt', ' 后端包:Tomcat webapps/sjnmtybt.war', '', "前端 config.js 已是 apiBase='/api',useMock=false。", '2130 不要改成 /sjnmtybt/api,否则接口会被页面回成 HTML。', '换 WAR 后需重启 11091 上的 Tomcat 才生效。', '', ].join('\n') fs.writeFileSync(path.join(out, '部署说明.txt'), note, 'utf8') function count(dir) { let n = 0 for (const name of fs.readdirSync(dir)) { const p = path.join(dir, name) n += fs.statSync(p).isDirectory() ? count(p) : 1 } return n } const war = fs.statSync(path.join(be, 'sjnmtybt.war')) console.log('OUT=' + out) console.log('WAR_MB=' + (war.size / 1024 / 1024).toFixed(1)) console.log('FE_FILES=' + count(fe)) console.log('INDEX=' + fs.existsSync(path.join(fe, 'index.html')))