我设法找到了一种非常干净的方法来设置它webpack.config.js
.
根据丹的回答:
$ npm install --save-dev imports-loader
事实证明我们实际上并不需要exports-loader
,因为 Three.js 示例将其构造函数添加到THREE
object.
然后,在webpack.config.js
,我们可以添加一条规则来添加var THREE = require('three');
如果模块的路径解析为包含以下内容的任何内容,则指向导入的模块three/examples/js
:
module: {
rules: [
...
{
test: /three\/examples\/js/,
use: 'imports-loader?THREE=three'
}
]
}
现在,示例模块将在需要时找到三个全局变量。
然后,为了让导入示例变得不那么冗长:
resolve: {
alias: {
'three-examples': path.join(__dirname, './node_modules/three/examples/js')
},
...
},
这假设webpack.config.js
与以下目录位于同一目录中node_modules
,进行相应调整。
现在,我们可以像这样使用示例文件:
import * as THREE from 'three';
import 'three-examples/controls/OrbitControls';
导入该模块以消除其副作用。
如果您将其与 Typescript 和/或 Babel 一起使用,并且收到有关找不到示例模块的警告THREE
,你可能会发现这个问题 https://github.com/webpack-contrib/imports-loader/issues/68 on the imports-loader
存储库可供参考。