我希望能够使用为我的Yeoman类提供通用功能的基类。像这样:
const Generator = require('yeoman-generator');
class MyCustomGenerator extends Generator {
writing() { /* overridable code here */ }
end() { /* overridable code here */ }
}
module.exports = class extends MyCustomGenerator { /* Custom behavior here */ }
但是,当我这样做时,不会调用MyCustomGenerator
中的yeoman函数,例如写作和 end 。
我看了Yeoman源代码,发现Yeoman只看了扩展类的属性:https://github.com/yeoman/generator/blob/master/lib/index.js#L398
扩展yeoman Generator类的最佳方法是什么,以便我可以提供一些可以被子类覆盖的默认行为?
注意:我发现运行以下奇怪的代码会将函数添加到孩子的原型中,并且孩子生成器将按预期继承行为:
class MyCustomGenerator extends Generator {
constructor() {
super();
Object.getPrototypeOf(this).writing = Object.getPrototypeOf(this).writing;
Object.getPrototypeOf(this).end = Object.getPrototypeOf(this).end;
}
writing() { /* overridable code here */ }
end() { /* overridable code here */ }
}