2015-04-22 25 views
10

Tôi đang đặt cùng một Máy phát điện Yeoman và gặp khó khăn khi hiểu cách tham số tùy chọn của composeWith() hoạt động. Mục tiêu của tôi là truyền đầu vào của người dùng từ lời nhắc của máy phát điện chính đến các máy phát phụ và tôi nghĩ rằng các tùy chọn là cách thực hiện điều này.Sử dụng composeWith tùy chọn trong máy phát điện phụ

máy phát điện chính của tôi ấy khiến trông giống như sau:

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

    var prompts = [ 
     { 
     type : 'input', 
     name : 'name', 
     message : 'What is the name of your project?', 
     default : this.appname // Default to current folder name 
     } 
    ]; 

    this.prompt(prompts, function (answers) { 

     this.composeWith('app:subgenerator', { 
      options: { 
      name: answers.name; 
      } 
     }, 
     { 
      local: require.resolve('generator-angular/app') 
     }); 
     done(); 
    }.bind(this) 
) 
} 

tôi đã cố gắng trong tôi sub-máy phát điện để thiết lập một biến địa phương sử dụng các đối số trong constructor (vì tôi cho rằng đó là nơi các tùy chọn sẽ là), như sau:

module.exports = generators.Base.extend({ 
    constructor: function() { 
    generators.Base.apply(this, arguments); 
    this.foo = arguments.options.name; 
    } 
} 

Nhưng điều này không hiệu quả. Tôi đã thử giao diện điều khiển ghi nhật ký biến số, và nó cho thấy rằng các tùy chọn là một đối tượng, nhưng nó dường như trống.

Đây có phải là cách tôi có thể chuyển đầu vào của người dùng thông qua trình tạo cho người khác hoặc có cách nào khác để làm điều đó không?

Trả lời

7

Máy phát điện phụ của bạn cần được viết ngay khi bạn viết một tùy chọn bình thường.

module.exports = generators.Base.extend({ 
    constructor: function() { 
    generators.Base.apply(this, arguments); 

    this.option('name'); 
    }, 

    initializing: function() { 
    console.log(this.options.name) 
    } 
} 

Xem user interaction documentation để biết thêm chi tiết.

+0

Đúng, điều đó đã thực hiện thủ thuật. Không hoàn toàn hiểu các tùy chọn hoạt động như thế nào từ tài liệu. Cảm ơn! –

+0

@JoshVickerson Hãy gửi PR để làm rõ tài liệu của chúng tôi, điều đó sẽ được hoan nghênh! –

Các vấn đề liên quan