首页 > 解决方案 > 打字稿从互联网和本地测试中引用模块

问题描述

我试图不将所有内容与我正在开发的打字稿游戏捆绑在一起。通过执行以下操作,我成功地解除了 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 中删除包,browserify -i simplex-noise ..但是当我尝试这个时,游戏停止运行,因为它试图require('simplex-noise')但脚本标签SimplexNoise自动创建命名空间。

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

if (local) {
    import ...
}

标签: javascripttypescriptimportbundlebrowserify

解决方案


推荐阅读