Files
esengine/source/build.config.js

178 lines
4.6 KiB
JavaScript
Raw Normal View History

/**
* ECS框架构建配置
* 针对LayaCocos等游戏引擎优化
*/
const path = require('path');
module.exports = {
// 输入配置
input: {
entry: './src/index.ts',
tsconfig: './tsconfig.json'
},
// 输出配置
output: {
dir: './bin',
formats: ['es', 'cjs', 'umd'], // ES模块、CommonJS、UMD
filename: {
es: 'ecs-framework.esm.js',
cjs: 'ecs-framework.cjs.js',
umd: 'ecs-framework.umd.js'
},
minify: true,
sourcemap: true
},
2025-06-08 10:20:51 +08:00
// WebAssembly支持配置
wasm: {
enabled: false, // 暂时禁用,未来启用
modules: {
// 计划迁移到WebAssembly的模块
core: {
entry: './src/wasm/core.ts',
output: 'ecs-core.wasm',
features: ['query-system', 'math-utils']
},
physics: {
entry: './src/wasm/physics.ts',
output: 'ecs-physics.wasm',
features: ['collision-detection', 'spatial-hash']
}
},
// AssemblyScript配置
assemblyscript: {
target: 'wasm32',
optimize: true,
runtime: 'minimal'
}
},
// 游戏引擎特定配置
engines: {
laya: {
// Laya引擎特定优化
target: 'es5',
polyfills: ['Promise', 'Object.assign'],
2025-06-08 10:20:51 +08:00
globals: ['Laya'],
wasm: {
// Laya环境下的WebAssembly配置
loader: 'laya-wasm-loader',
fallback: true // 支持降级到JavaScript
}
},
cocos: {
// Cocos引擎特定优化
target: 'es6',
polyfills: [],
2025-06-08 10:20:51 +08:00
globals: ['cc'],
wasm: {
// Cocos环境下的WebAssembly配置
loader: 'cocos-wasm-loader',
fallback: true
}
}
},
// 小游戏平台优化
platforms: {
wechat: {
// 微信小游戏优化
maxSize: '4MB',
treeshaking: true,
2025-06-08 10:20:51 +08:00
compression: 'gzip',
wasm: {
// 微信小游戏WebAssembly支持
enabled: true,
maxWasmSize: '2MB', // WebAssembly模块大小限制
preload: ['ecs-core.wasm'] // 预加载核心模块
}
},
alipay: {
// 支付宝小游戏优化
maxSize: '4MB',
treeshaking: true,
2025-06-08 10:20:51 +08:00
compression: 'gzip',
wasm: {
enabled: true,
maxWasmSize: '2MB'
}
},
bytedance: {
// 字节跳动小游戏优化
maxSize: '4MB',
treeshaking: true,
2025-06-08 10:20:51 +08:00
compression: 'gzip',
wasm: {
enabled: true,
maxWasmSize: '2MB'
}
}
},
// 性能优化配置
optimization: {
// 启用Tree Shaking
treeshaking: true,
// 代码分割
codeSplitting: false, // 小游戏通常不需要代码分割
// 压缩配置
minify: {
removeComments: true,
removeConsole: false, // 保留console用于调试
removeDebugger: true
},
// 内联小文件
2025-06-08 10:20:51 +08:00
inlineThreshold: 1024,
// WebAssembly优化
wasm: {
// 启用WebAssembly优化
optimize: true,
// 内存配置
memory: {
initial: 1, // 初始内存页数 (64KB per page)
maximum: 16, // 最大内存页数
shared: false // 是否共享内存
},
// 导出配置
exports: {
memory: true,
table: false
}
}
},
// 开发配置
development: {
sourcemap: true,
hotReload: false, // 小游戏不支持热重载
debugMode: true
},
// 生产配置
production: {
sourcemap: false,
minify: true,
optimization: true,
bundleAnalyzer: true
2025-06-08 10:20:51 +08:00
},
// 实验性功能
experimental: {
// 混合架构支持
hybrid: {
enabled: true,
// 自动检测WebAssembly支持
autoDetect: true,
// 性能基准测试
benchmark: true,
// 降级策略
fallback: {
strategy: 'graceful', // 优雅降级
modules: ['core', 'physics'] // 支持降级的模块
}
}
}
};