【发布时间】:2017-01-05 15:47:06
【问题描述】:
我正在构建一个将 THREE.js 作为依赖项的模块。我正在尝试找出将 THREE 包含为依赖项并使其可供模块和模块用户访问的最佳方法(用户将需要访问其项目中的 THREE 库)。我想出了两种方法来完成这项工作:
一个:
添加THREE作为模块的依赖,在模块中导入整个库并将其添加为全局变量,如下所示:
import * as THREE from 'three';
window.THREE = THREE;
这里的缺点是我负责使用哪个版本的 THREE,并且还要导入整个库(THREE 最近切换到模块化构建,因此不再需要包含整个库)。
两个:
添加三个作为模块的依赖项并且要求用户将其添加为他们项目的依赖项。这里的想法是我现在可以只从项目中导入我需要的东西:
import { Scene, Camera } from 'three';
并且用户可以在他们的项目中导入他们需要的内容,从而减小文件大小。
这里的问题是,现在安装了两个副本 THREE,它们可能是不同且不兼容的版本。有没有办法将我的模块指向顶级模块,以便他们可以管理已安装的 THREE 版本?
【问题讨论】:
-
我在与您类似的情况下看到的情况是让用户负责将依赖项传递给您的模块。在你这边,你使用他们给你的
three.js,如果他们忘记添加你需要的模块,你会返回一个错误。 -
现在只是在研究这个,但是我对如何将依赖项传递给模块持空白。你有什么建议吗?
-
简单方法:公开一个“init”函数,该函数接受一个参数,您将其作为全局变量放入模块中,并在其他地方使用,就像它是库一样。否则,您应该能够通过将整个
module.exports设置为函数,并将参数用作库来从 require 本身获取参数。
标签: javascript node.js npm three.js node-modules