考虑一个可通过插件扩展的节点模块(superModule);它似乎是合理的,这样的插件可以实现像图所示:是否可以将ES6基类与节点模块一起使用?
const superModule = require("super-module");
class SpecialPlugin extends superModule.Plugin {
foo() {
}
}
module.exports = SpecialPlugin;
这意味着使用一个项目,无论是“超级模块”和“超级模块特殊插件”模块会看起来像如下:
{project}/
|-node_modules/
| |-super-module/ <----
| | |-index.js |
| | |-package.json |
| | |-- Included Twice?!
| |-super-module-special-plugin/ |
| | |-node_modules/ |
| | | |-super-module/ <----
| | | | |-index.js
| | | | |-package.json
| | | |
| | |-index.js
| | |-package.json
| |
|-index.js
|-package.json
目录结构包含两次相同的“超级模块”实现。
Q1。 NPM在这种情况下的行为如何? Q2302。是不是可以公开一个基础的“插件”类?
更新/教育反思:
或许正确的办法是做类似如下,其中“超级模块”是被调用者注入到它的插件。
module.exports.setup = function(superModule) {
return class SuperPlugin extends superModule.Plugin {
foo() {
}
}
};
这真的很有用;谢谢! –
**另外:**我发现我必须更新到最新的npm才能使对等方依赖性正常工作。 –