const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); console.log('šŸš€ 使用 Rollup ęž„å»ŗ network-shared 包...'); async function main() { try { if (fs.existsSync('./dist')) { console.log('🧹 ęø…ē†ę—§ēš„ęž„å»ŗę–‡ä»¶...'); execSync('rimraf ./dist', { stdio: 'inherit' }); } console.log('šŸ“¦ ę‰§č”Œ Rollup ęž„å»ŗ...'); execSync('rollup -c rollup.config.cjs', { stdio: 'inherit' }); console.log('šŸ“‹ ē”Ÿęˆ package.json...'); generatePackageJson(); console.log('šŸ“ å¤åˆ¶åæ…č¦ę–‡ä»¶...'); copyFiles(); showBuildResults(); console.log('āœ… network-shared ęž„å»ŗå®Œęˆļ¼'); console.log('\nšŸš€ å‘åøƒå‘½ä»¤:'); console.log('cd dist && npm publish'); } 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', 'networking', 'shared', 'decorators', 'protobuf', 'serialization', 'game-engine', 'typescript' ], author: sourcePackage.author, license: sourcePackage.license, repository: sourcePackage.repository, dependencies: sourcePackage.dependencies, peerDependencies: sourcePackage.peerDependencies, 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);