Files
x_admin/admin/scripts/build.mjs
2024-06-13 14:22:19 +08:00

64 lines
1.7 KiB
JavaScript

import { execaCommand } from 'execa'
import path from 'path'
import fsExtra from 'fs-extra'
const { existsSync, remove, copy } = fsExtra
const cwd = process.cwd()
//打包发布路径,谨慎改动
const releaseRelativePath = '../frontend'
const distPath = path.resolve(cwd, 'dist')
const releasePath = path.resolve(cwd, releaseRelativePath)
const goProjectPath = path.resolve(cwd, '../server')
async function build_go() {
await execaCommand('swag fmt', {
stdio: 'inherit',
encoding: 'utf8',
cwd: goProjectPath
})
await execaCommand('swag init', {
stdio: 'inherit',
encoding: 'utf8',
cwd: goProjectPath
})
await execaCommand('goreleaser release --snapshot --clean', {
stdio: 'inherit',
encoding: 'utf8',
cwd: goProjectPath
})
}
async function build_frontend() {
await execaCommand('npm run prod', { stdio: 'inherit', encoding: 'utf8', cwd })
if (existsSync(releasePath)) {
await remove(releasePath)
}
console.log(`文件正在复制 ==> ${releaseRelativePath}`)
try {
await copyFile(distPath, releasePath)
} catch (error) {
console.log(error)
}
console.log(`文件已复制 ==> ${releaseRelativePath}`)
}
async function build() {
try {
console.log('开始打包')
await Promise.allSettled([build_go(), build_frontend()])
} catch (error) {
console.log(error)
}
}
function copyFile(sourceDir, targetDir) {
return new Promise((resolve, reject) => {
copy(sourceDir, targetDir, (err) => {
if (err) {
reject(err)
} else {
resolve()
}
})
})
}
build()