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
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);
|
|
}
|
|
|