如何从threeJs包中仅获取TypeScript类型?
我正在用包含threeJs功能的Webpack构建一个前端。在过去,我通常不在包中包含threeJs以保持其较小(我在index.html中使用了CDN链接中的ThreeJSUMD)。然而,我确实使用了如何从threeJs包中仅获取TypeScript类型?,typescript,webpack,three.js,Typescript,Webpack,Three.js,我正在用包含threeJs功能的Webpack构建一个前端。在过去,我通常不在包中包含threeJs以保持其较小(我在index.html中使用了CDN链接中的ThreeJSUMD)。然而,我确实使用了@types/three软件包来打字 但是,@types/three现在已被弃用。相反,three现在包含自己的模块化类型。但是现在,我不知道如何在包中不包含所有大量的threeJs代码的情况下,仅对其类型使用three包 建议 我的建议是,既然您正在使用Webpack,那么: 添加three作为
@types/three
软件包来打字
但是,@types/three
现在已被弃用。相反,three
现在包含自己的模块化类型。但是现在,我不知道如何在包中不包含所有大量的threeJs代码的情况下,仅对其类型使用three包
建议 我的建议是,既然您正在使用Webpack,那么:
three
作为项目依赖项,这样您就可以继续正常开发并利用包含的类型,然后externals
防止捆绑某些import
ed包,而是在运行时检索它们
按照文档示例的相同步骤,您将得到类似于以下内容的设置:
index.html
<script
src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r106/three.min.js">
</script>
这使得三个上的任何依赖模块保持不变,即下面显示的代码仍然有效:
import { Scene } from 'three';
const scene = new Scene();
它最初被弃用,但现在是再次使用的地方。于2021年1月完成
所以只需通过运行
npm安装-D@types/three
啊,是的——对外部的思考很好!这是可行的,尽管要从同一npm包中导入类型化OrbitalControl而不包括主要的ThreeJs构建是很困难的。我找到了解决这个问题的方法,将node\u modules/three/examples/jsm/*
dir中的所有内容复制到我的代码库中,并更改它们的导入路径。你可以看到我的解决方案
import { Scene } from 'three';
const scene = new Scene();