2012-10-08 29 views
1

我试图开发一个自定义发电机约曼使用CoffeeScript的但我面临的一个问题。当我使用hookFor方法在我Generator类的构造函数,我得到一个警告hookFor必须构造内使用,当我尝试初始化我用约曼项目,我的自定义生成器。这里是我index.coffee发电机的代码:约曼发电机的CoffeeScript - HookFor警告

path = require 'path' 
util = require 'util' 
yeoman = require '../../../../' 
module.exports = class Generator extends yeoman.generators.Base 
    constructor: -> 
     super() 
     @directories = ['controllers', 'helpers', 'models', 'templates', 'views'] 
     @hookFor 'artefact:controller', args: ['App'] 
    deploy: -> 
     @directory '.', '.' 
     @mkdir path.join 'dev', directory for directory in @directories 

任何帮助将不胜感激。谢谢。

回答

1

显然,错误来自约曼发电机代码在自耕农发电机/ lib目录/ base.js文件。 这里是我导致了这样的结论:

  1. 警告是由可变_running设置为truehookFor功能(线296)
  2. 此变量设置为true run功能引起的(第78行)之后,迭代类Generator的方法(第81-137行)
  3. CoffeeScript中为类Generator定义的构造函数在iterat离子,所以@hookFor被调用,而_runningtrue警告!
  4. 但是,构造函数不应该叫,因为测试是在迭代期间进行,以防止它(92行)

    if (method.constructor === '-') 
    
  5. 然而,本次测试,在我看来,应该是:

    if (method === 'constructor') 
    

的黑客的伎俩。如果我错了,随意添加评论。