#!/usr/bin/env node import { readFileSync, writeFileSync } from 'fs'; import { join, dirname } from 'path'; import { fileURLToPath } from 'url'; // 获取当前文件目录 const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const projectRoot = join(__dirname, '..'); console.log('🚀 开始构建项目...'); try { // 1. 读取package.json文件 console.log('📋 读取package.json文件...'); const rootPackageJson = JSON.parse(readFileSync(join(projectRoot, 'package.json'), 'utf8')); const serverPackageJson = JSON.parse(readFileSync(join(projectRoot, 'packages/server/package.json'), 'utf8')); // 2. 合并依赖 console.log('🔗 合并依赖...'); const mergedDependencies = { ...rootPackageJson.dependencies, ...serverPackageJson.dependencies }; // 3. 创建生产环境的package.json const productionPackageJson = { name: rootPackageJson.name, type: 'module', version: rootPackageJson.version || '1.0.0', description: 'Koa SSR 生产环境应用', main: 'booststap.js', scripts: { start: 'bun run booststap.js' }, dependencies: mergedDependencies, engines: { bun: '>=1.0.0' }, keywords: ['koa', 'ssr', 'vue', 'bun'], author: '', license: 'MIT' }; // 4. 写入新的package.json到dist目录 console.log('💾 生成生产环境package.json...'); const distPackageJsonPath = join(projectRoot, 'dist', 'package.json'); writeFileSync(distPackageJsonPath, JSON.stringify(productionPackageJson, null, 2)); console.log('✅ package.json 已生成到 dist/package.json'); // 5. 显示合并后的依赖信息 console.log('\n📊 依赖合并结果:'); console.log(`- 根目录依赖: ${Object.keys(rootPackageJson.dependencies || {}).length} 个`); console.log(`- Server依赖: ${Object.keys(serverPackageJson.dependencies || {}).length} 个`); console.log(`- 合并后总依赖: ${Object.keys(mergedDependencies).length} 个`); console.log('\n🎉 构建脚本执行完成!'); console.log('📁 生产环境文件已生成到 dist/ 目录'); console.log('💡 可以使用以下命令启动生产环境:'); console.log(' cd dist && bun install && bun run start'); } catch (error) { console.error('❌ 构建过程中发生错误:', error.message); process.exit(1); }