const resolve = require('@rollup/plugin-node-resolve'); const commonjs = require('@rollup/plugin-commonjs'); const terser = require('@rollup/plugin-terser'); const dts = require('rollup-plugin-dts').default; const { readFileSync } = require('fs'); const pkg = JSON.parse(readFileSync('./package.json', 'utf8')); const banner = `/** * @esengine/network-server v${pkg.version} * ECS网络层服务端实现 * * @author ${pkg.author} * @license ${pkg.license} */`; // 外部依赖,不打包进bundle (Node.js环境,保持依赖外部化) const external = [ '@esengine/ecs-framework', '@esengine/network-shared', 'ws', 'reflect-metadata', 'http', 'https', 'crypto', 'events', 'stream', 'util', 'fs', 'path' ]; const commonPlugins = [ resolve({ preferBuiltins: true, browser: false }), commonjs({ include: /node_modules/ }) ]; module.exports = [ // ES模块构建 { input: 'bin/index.js', output: { file: 'dist/index.mjs', format: 'es', banner, sourcemap: true, exports: 'named' }, plugins: [ ...commonPlugins, terser({ format: { comments: /^!/ } }) ], external, treeshake: { moduleSideEffects: false, propertyReadSideEffects: false, unknownGlobalSideEffects: false } }, // CommonJS构建 (Node.js主要格式) { input: 'bin/index.js', output: { file: 'dist/index.cjs', format: 'cjs', banner, sourcemap: true, exports: 'named' }, plugins: [ ...commonPlugins, terser({ format: { comments: /^!/ } }) ], external, treeshake: { moduleSideEffects: false } }, // 类型定义构建 { input: 'bin/index.d.ts', output: { file: 'dist/index.d.ts', format: 'es', banner: `/** * @esengine/network-server v${pkg.version} * TypeScript definitions */` }, plugins: [ dts({ respectExternal: true }) ], external } ];