允许用户管理npm模块的依赖项版本

时间:2016-08-29 14:52:11

标签: javascript node.js npm three.js node-modules

我正在构建一个将THREE.js作为依赖项的模块。我试图找出将THREE作为依赖项包含在内的最佳方法,并使模块和模块用户可以访问它(用户需要访问项目中的THREE库)。我有两种方法可以解决这个问题:

一:

添加THREE作为模块的依赖项,将整个库导入模块并将其添加为全局变量,如下所示:

import * as THREE from 'three'; 
window.THREE = THREE;

这里的缺点是我负责使用什么版本的THREE,以及导入整个库(THREE最近已切换到模块化版本,因此不再需要包含整个库)。

两个

添加THREE作为模块的依赖关系要求用户将其添加为项目的依赖项。这里的想法是我现在只能从项目中导入我需要的东西:

import { Scene, Camera } from 'three'; 

用户可以在项目中导入他们需要的内容,从而缩小文件大小。

这里的问题是现在安装了两个THREE副本,这些副本可能是不同且不兼容的版本。有没有办法将我的模块指向顶级模块,以便他们可以管理已安装的THREE版本?

1 个答案:

答案 0 :(得分:1)

我所看到的方式与此类似,但我从未在制作过程中做过类似的事情,所以我个人并不了解它的实力:

main.js:

'use strict';
const three = require('three'),
    mod = require('yourModule');

mod.init(three);
//...

yourModule.js:

'use strict';
let three = {};
function init(t) {
    three = t;
}
//...
modules.export = {
    init: init
    //...
};

或者

main.js:

'use strict';
const three = require('three'),
    mod = require('yourModule')(three);

yourModule.js:

'use strict';
module.exports = (three) => {
    //...
};