更新库rollup配置

This commit is contained in:
YHH
2025-08-11 10:25:28 +08:00
parent 6a49f6a534
commit 7daf352a25
11 changed files with 291 additions and 82 deletions

View File

@@ -1,48 +1,125 @@
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
console.log('开始构建 @esengine/ecs-framework-math...');
console.log('🚀 使用 Rollup 构建 @esengine/ecs-framework-math npm包...');
try {
// 检查bin目录是否存在
if (!fs.existsSync('bin')) {
console.error('错误: bin目录不存在请先运行 npm run build');
process.exit(1);
}
async function main() {
try {
// 清理旧的dist目录
if (fs.existsSync('./dist')) {
console.log('🧹 清理旧的构建文件...');
execSync('rimraf ./dist', { stdio: 'inherit' });
}
// 创建dist目录
if (!fs.existsSync('dist')) {
fs.mkdirSync('dist');
}
// 执行Rollup构建
console.log('📦 执行 Rollup 构建...');
execSync('rollup -c rollup.config.cjs', { stdio: 'inherit' });
// 运行rollup构建
execSync('npx rollup -c rollup.config.cjs', { stdio: 'inherit' });
// 生成package.json
console.log('📋 生成 package.json...');
generatePackageJson();
// 复制package.json到dist
const pkg = require('./package.json');
const distPkg = {
...pkg,
main: 'index.cjs.js',
module: 'index.esm.js',
types: 'index.d.ts',
scripts: undefined,
devDependencies: undefined
};
// 复制其他文件
console.log('📁 复制必要文件...');
copyFiles();
fs.writeFileSync(
path.join('dist', 'package.json'),
JSON.stringify(distPkg, null, 2)
);
// 输出构建结果
showBuildResults();
// 复制README如果存在
if (fs.existsSync('README.md')) {
fs.copyFileSync('README.md', path.join('dist', 'README.md'));
}
console.log('✅ 构建完成!');
console.log('\n🚀 发布命令:');
console.log('cd dist && npm publish');
console.log('✓ @esengine/ecs-framework-math 构建完成');
} catch (error) {
console.error('❌ 构建失败:', error.message);
process.exit(1);
}
}
} catch (error) {
console.error('构建失败:', error.message);
process.exit(1);
}
function generatePackageJson() {
const sourcePackage = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
const distPackage = {
name: sourcePackage.name,
version: sourcePackage.version,
description: sourcePackage.description,
main: 'index.cjs',
module: 'index.mjs',
unpkg: 'index.umd.js',
types: 'index.d.ts',
exports: {
'.': {
import: './index.mjs',
require: './index.cjs',
types: './index.d.ts'
}
},
files: [
'index.mjs',
'index.mjs.map',
'index.cjs',
'index.cjs.map',
'index.umd.js',
'index.umd.js.map',
'index.d.ts',
'README.md',
'LICENSE'
],
keywords: [
'ecs',
'math',
'2d',
'vector',
'matrix',
'geometry',
'collision',
'game-engine',
'typescript',
'rollup'
],
author: sourcePackage.author,
license: sourcePackage.license,
repository: sourcePackage.repository,
bugs: sourcePackage.bugs,
homepage: sourcePackage.homepage,
engines: {
node: '>=16.0.0'
},
sideEffects: false
};
fs.writeFileSync('./dist/package.json', JSON.stringify(distPackage, null, 2));
}
function copyFiles() {
const filesToCopy = [
{ src: './README.md', dest: './dist/README.md' },
{ src: './LICENSE', dest: './dist/LICENSE' }
];
filesToCopy.forEach(({ src, dest }) => {
if (fs.existsSync(src)) {
fs.copyFileSync(src, dest);
console.log(` ✓ 复制: ${path.basename(dest)}`);
} else {
console.log(` ⚠️ 文件不存在: ${src}`);
}
});
}
function showBuildResults() {
const distDir = './dist';
const files = ['index.mjs', 'index.cjs', 'index.umd.js', 'index.d.ts'];
console.log('\n📊 构建结果:');
files.forEach(file => {
const filePath = path.join(distDir, file);
if (fs.existsSync(filePath)) {
const size = fs.statSync(filePath).size;
console.log(` ${file}: ${(size / 1024).toFixed(1)}KB`);
}
});
}
main().catch(console.error);