Генератор Yeoman в CoffeeScript - HookFor Warning

Я пытаюсь разработать собственный генератор для Yeoman с использованием CoffeeScript, но у меня возникла проблема. Когда я использую метод hookFor в конструкторе своего класса Generator, я получаю предупреждение, что нужно использовать hookFor в конструкторе, когда я пытаюсь запустить свой проект с помощью Yeoman и моего настраиваемого генератора. Вот код моего генератора в index.coffee:

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

Любая помощь будет оценена по достоинству. Спасибо.


person Gregory Bouteiller    schedule 08.10.2012    source источник


Ответы (1)


Очевидно, ошибка связана с кодом Yeoman Generators в файле yeoman-generators / lib / base.js. Вот как я пришел к такому выводу:

  1. Предупреждение вызвано тем, что для переменной _running установлено значение true в hookFor функции (строка 296)
  2. Для этой переменной установлено значение true в run функции (строка 78), и сразу после этого выполняются итерации методов класса Generator (строки 81-137).
  3. конструктор, определенный в CoffeeScript для класса Generator, вызывается во время итерации, поэтому вызывается @hookFor, тогда как _running true: предупреждение!
  4. Но конструктор не должен вызываться, потому что во время итерации выполняется тест, чтобы предотвратить его (строка 92):

    if ( method.constructor === '-' )
    
  5. Однако этот тест, на мой взгляд, должен быть:

    if ( method === 'constructor' )
    

Хак делает свое дело. Не стесняйтесь добавлять комментарии, если я ошибаюсь.

person Gregory Bouteiller    schedule 09.10.2012