javascript - 打字稿从互联网和本地测试中引用模块
问题描述
我试图不将所有内容与我正在开发的打字稿游戏捆绑在一起。通过执行以下操作,我成功地解除了 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 ...
}
解决方案
推荐阅读
- python - Python Selenium:如何编辑 YouTube 频道下拉菜单?
- java - Eclipse Maven Build 失败,找不到工具 jar
- java - 如何使用未映射到实体的字段创建 EntityView
- composite-primary-key - Hibernate 中的部分复合键映射
- database - 如何对位于 MongoDB 中的对象数组内的键进行排序
- kotlin - 用放心提取嵌套 POJO 对象
- java - 子类是否继承 Lombok 注释?
- javascript - UserContext 仅在手动导航到页面时有效,而不是在自动完成时有效
- ruby-on-rails - 当我使用 where 语句时,Rails Searchkick 不返回结果
- python - 如果 chrome 不是默认浏览器,如何使用 webbrowser.get 打开多个 chrome 选项卡?