如何创建Yeoman基类?

时间:2018-10-30 02:14:20

标签: javascript yeoman yeoman-generator

我希望能够使用为我的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 */ }
}

0 个答案:

没有答案