我想为我的项目要求添加几个异步包的方法..我不想更改aync的js文件。如何扩展Node模块以添加更多功能?
当我需要('myasync')时,我想要'async'模块的所有功能以及我添加的功能。
答案 0 :(得分:11)
完成此操作的步骤如下:
require
它(作为NPM模块或文件模块)。首先,我们要求异步。
var newModule = require('async');
现在我们已经检索了模块async
,我们可以附加我们自己的函数。
newModule.betterParallel = function(myParameters) { ... };
我们不仅可以添加自己的功能,而且甚至可以从模块中删除 - 因为它现在是我们自己的。
delete newModule['series'];
完成后,我们需要重新导出新模块。
module.exports = newModule;
如果要将此作为自己的模块发布到NPM,可以使用npm publish
。如果你不想,你只需require
这个文件 - 现在它包含你修改过的更改。
答案 1 :(得分:4)
// module that you like to extend
var async = require('async')
// add a new function, myOwnFunction, to the module
async.myOwnFunction = function () {
// do something
}
// re-export the module, for the changes to take effect
module.exports = async
答案 2 :(得分:0)
如果该模块导出Object
,我的个人喜好是:
import moduleToExtend from "moduleToExtend";
const myModule = {
newFunction1: function () {
// some new stuff
},
newFunction2: function () {
// some new stuff
},
};
module.exports = Object.assign(moduleToExtend, myModule);
来自docs:
Object.assign()方法从以下位置复制所有可枚举的属性: 一个或多个源对象到目标对象。它返回目标 对象。