You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tsup打包ECS私有npm包出现类实例重复问题求助

tsup打包ECS私有npm包时出现类实例重复导致通信异常的问题

我正在开发一个基于ECS架构的私有npm包,使用tsup进行代码打包。

当前配置与代码结构

  • tsup打包配置:配置了多格式导出(CJS/ESM)、代码分割、生成SourceMap和类型声明,核心示例如下:
import { defineConfig } from 'tsup';

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['cjs', 'esm'],
  splitting: true,
  sourcemap: true,
  clean: true,
  dts: true,
});
  • 入口导出(index.ts):通过export *批量导出各模块内容,示例:
export * from './components';
export * from './systems';
export * from './ecsDefs';
  • ECS World定义(ecsDefs.ts):在该文件中声明纳入World的组件、系统数组,并创建导出World实例,示例:
import { createWorld } from 'ecs-lib';
import { CompA, CompB } from './components';
import { SysA, SysB } from './systems';

const components = [CompA, CompB];
const systems = [SysA, SysB];

export const world = createWorld({ components, systems });

遇到的问题

打包后dist文件夹中出现同一类的两个独立实例:一个是通过index.ts直接导出的模块实例,另一个是ecsDefs.ts中World内部引用的实例。这直接导致非ECS静态类与ECS类之间的通信完全失效。

已尝试的解决方法

  • 在包外独立创建ECS系统时,导入并更新外部静态属性一切正常;但将系统移入包内后,包外代码能识别静态属性的修改,可系统自身却无法读取到这些修改,推测是类实例重复导致的。
  • 尝试将静态类挂载到window对象并声明全局变量,但这种方式不稳定,不适合生产环境。

想问问有没有人遇到过相同的问题?你们试过哪些有效的解决方法?如果需要更多细节我可以补充。


内容的提问来源于stack exchange,提问作者J e r 0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:02:10