#!/usr/bin/env node
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
const rootDir = path.join(__dirname, '..')
function copyDirectory(src, dest) {
if (!fs.existsSync(src)) {
console.log(`⚠️ 源目录不存在: ${src}`)
return
}
if (!fs.existsSync(dest)) {
fs.mkdirSync(dest, { recursive: true })
}
const entries = fs.readdirSync(src, { withFileTypes: true })
for (const entry of entries) {
const srcPath = path.join(src, entry.name)
const destPath = path.join(dest, entry.name)
if (entry.isDirectory()) {
copyDirectory(srcPath, destPath)
} else {
fs.copyFileSync(srcPath, destPath)
}
}
}
console.log('📁 构建后复制静态资源...')
const standaloneDir = path.join(rootDir, '.next', 'standalone')
const pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf8'))
const appDir = path.join(standaloneDir, pkg.name)
let targetDir = standaloneDir
if (fs.existsSync(appDir) && fs.lstatSync(appDir).isDirectory()) {
console.log(`🔍 检测到应用子目录: ${appDir}`)
targetDir = appDir
}
copyDirectory(path.join(rootDir, 'public'), path.join(targetDir, 'public'))
copyDirectory(path.join(rootDir, '.next', 'static'), path.join(targetDir, '.next', 'static'))
console.log('✅ 静态资源复制完成')