优化跨平台打包问题
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
const { execSync } = require('child_process')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const AdmZip = require('adm-zip')
|
||||
|
||||
const root = path.join(__dirname, '..')
|
||||
const dist = path.join(root, 'dist')
|
||||
@@ -31,15 +32,57 @@ console.log('📁 Copying assets...')
|
||||
const src = path.join(root, 'public', dir)
|
||||
const dest = path.join(dist, dir)
|
||||
if (fs.existsSync(src)) {
|
||||
execSync(`cp -r "${src}" "${dest}"`)
|
||||
// Use Node.js fs module for cross-platform compatibility
|
||||
copyRecursiveSync(src, dest)
|
||||
}
|
||||
})
|
||||
|
||||
// Helper function to copy directories recursively
|
||||
function copyRecursiveSync(src, dest) {
|
||||
const exists = fs.existsSync(src)
|
||||
const stats = exists && fs.statSync(src)
|
||||
const isDirectory = exists && stats.isDirectory()
|
||||
if (isDirectory) {
|
||||
if (!fs.existsSync(dest)) {
|
||||
fs.mkdirSync(dest, { recursive: true })
|
||||
}
|
||||
fs.readdirSync(src).forEach((childItemName) => {
|
||||
copyRecursiveSync(
|
||||
path.join(src, childItemName),
|
||||
path.join(dest, childItemName)
|
||||
)
|
||||
})
|
||||
} else {
|
||||
fs.copyFileSync(src, dest)
|
||||
}
|
||||
}
|
||||
|
||||
// 4. Zip
|
||||
console.log('📦 Creating zip...')
|
||||
fs.rmSync(release, { recursive: true, force: true })
|
||||
fs.mkdirSync(release, { recursive: true })
|
||||
|
||||
const outName = 'mygame'
|
||||
execSync(`cd "${dist}" && zip -r "${path.join(release, outName)}.zip" .`)
|
||||
const zip = new AdmZip()
|
||||
|
||||
// Add all files from dist directory to the zip
|
||||
const addFilesToZip = (dir) => {
|
||||
const files = fs.readdirSync(dir)
|
||||
files.forEach((file) => {
|
||||
const filePath = path.join(dir, file)
|
||||
const stat = fs.statSync(filePath)
|
||||
if (stat.isDirectory()) {
|
||||
addFilesToZip(filePath)
|
||||
} else {
|
||||
const relativePath = path.relative(dist, filePath)
|
||||
zip.addLocalFile(filePath, '', relativePath)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
addFilesToZip(dist)
|
||||
|
||||
// Write the zip file
|
||||
const zipPath = path.join(release, `${outName}.zip`)
|
||||
zip.writeZip(zipPath)
|
||||
console.log(`✅ Packaged: release/${outName}.zip`)
|
||||
|
||||
Reference in New Issue
Block a user