You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

67 lines
2.4 KiB

#!/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'));
const clientPackageJson = JSON.parse(readFileSync(join(projectRoot, 'packages/client/package.json'), 'utf8'));
// 2. 合并依赖
console.log('🔗 合并依赖...');
const mergedDependencies = {
...rootPackageJson.dependencies,
...serverPackageJson.dependencies,
...clientPackageJson.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);
}