Как получить результат вложенных подсказок в генераторе йомена

Я новичок в javascript, и, следуя написанию вашего первого учебника по генераторам и читая код других генераторов, мне удалось зайти так далеко с моим первым генератором.

Я пробовал различные способы заставить это работать и с треском провалился, я был бы признателен, если бы кто-нибудь мог указать мне в правильном направлении. Я, вероятно, должен указать, что я использовал генератор-генератор v0.4.3

ой забыл сказать, что проблема заключается в получении ответа от списка ароматов.

askFor: function () {
    var done = this.async();

    var prompts = [{
      name: 'sitename',
      message: 'What would you like to name your app/site?',
      default: 'New Project'
    },{
      type: 'checkbox',
      name: 'features',
      message: 'Please choose additional features',
      choices:[{
        name: 'Modernizr',
        value: 'includeModernizr',
        checked: false
      },{
        name: 'Respond',
        value: 'includeRespond',
        checked: false
      }]
    },{
      type: 'list',
      name: 'flavour',
      message: 'Which type of css would you like to use?',
      choices: [{
        name: 'Sass',
        value: 'includeSass'
      },{
        name: 'Sass with Compass',
        value: 'includeCompass'
      },{
        name: 'Stylus',
        value: 'includeStylus'
      },{
        name: 'Standard css',
        value: 'includeCss'
      }]
      ,default: 1
    },{
      when: function (props) {
        return props.flavour.indexOf('includeSass') !== -1;
      },
      type: 'confirm',
      name: 'libsass',
      value: 'includeLibSass',
      message: 'Would you like to use libsass? Read about libsass at \n' + chalk.green('https://github.com/andrew/node-sass#nodesass'),
      default: false
    }];

    this.prompt(prompts, function (props) {
      var features = props.features;

      function hasFeature (feat) {
        return features.indexOf(feat) !== -1;
      }

      this.sitename = props.sitename;

      this.includeModernizr = hasFeature('includeModernizr');
      this.includeRespond = hasFeature('includeRespond');

      //this is obviously the wrong way to do it
      this.includeSass = props.includeSass;

      this.includeLibSass = props.libsass;
      this.includeRubySass = !props.libsass;

      done();
    }.bind(this));
  },

person Nijomi    schedule 29.04.2014    source источник


Ответы (2)


Вместо использования функции hasFeature вы можете использовать _.includes из lodash. Это простой способ извлечь варианты.

this.includeModernizr = _.includes(props.features, 'includeModernizr');
person mike.bukosky    schedule 31.12.2015

Кажется, я решил это для себя. Я добавил еще одну функцию hasFlavour, аналогичную hasFeature, но явно использующую аромат, и она работает. Если это неправильный способ сделать это, пожалуйста, дайте мне знать.

person Nijomi    schedule 29.04.2014
comment
где твой ответ? - person Keval Bhatt; 11.12.2015