从互联网和本地测试中引用模块的打字稿

问题描述

我试图不将所有内容与我正在开发的打字稿游戏捆绑在一起。通过执行以下操作,我已成功解绑 2D 游戏引擎 pixi.js

在 .html 中:

<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/5.3.3/pixi.min.js"></script>

在编译根目录 (main.ts)

/// <reference types="pixi.js" />

结果我已经能够删除所有

import * as PIXI from 'pixi.js'

来自单个文件的语句,并且能够从捆绑脚本(由 browserify 和 minify 创建)中减少大约 50%。


但是,当我需要一个带有认导出的模块时,这些模块也反映在本地测试中(使用 chai),就会出现问题,例如:

import SimplexNoise from 'simplex-noise'

我已经通过推杆验证游戏仍然可以运行

<script type="module" src="https://cdnjs.cloudflare.com/ajax/libs/simplex-noise/2.4.0/simplex-noise.js"></script>

在 html 文件中,将前面提到的 import 语句替换为

// @ts-nocheck

然而,本地测试套件依赖于存在的本地导入语句。

有没有办法既满足本地测试要求又从捆绑包中删除包?我知道我可以使用 browserify -i simplex-noise .. 手动从 browserify 中删除包,但是当我尝试此操作时,游戏停止运行,因为它尝试 require('simplex-noise') 但脚本标记自动创建命名空间 SimplexNoise。>

AFAIK,与 python 不同,您不能在 javascript 中执行以下操作。

if (local) {
    import ...
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)