2013-05-19 12 views
8

Bir blogda yeni gönderiler için bir projede dizin oluşturmak için Grunt'ı kullanmaya çalışıyorum. Temelde YYYYMMDDDD-PostNameInPascalCase adlı posts dizininin içinde bir dizin oluşturur.Kullanıcı herhangi bir aldatma görevinde giriş istemek mümkün mü?

Bunu yapmak için, görevi her çalıştırdığımda kullanıcı adını posta için sormak zorundayım. Grunt-init kullanıcıların proje şablonlarından proje oluşturmasını istediğini biliyorum, ancak zaten kurulmuş bir proje için Gruntfile.js dosyasında bunu yapmanın bir yolu varsa merak ediyorum.

Herhangi bir düşünce?

+0

Herhangi birinden ne demek istiyorsunuz? Grunt-contrib-pusula gibi bir şey yapmadan önce seni sormak ister misin? – coma

+0

@coma Yup - tam olarak. Burada duyduğum bir his var. Belirli bir görevi değiştirmeyi gerektirse bile, bu da tamam olur. – mbeasley

cevap

13

Bu sorunun en son sorulduğu bir süredir, ancak Github üzerinde, soruşturmacının aradığı şeyi yapmaya çalışan bir proje var. Bu, grunt-prompt olarak adlandırılır ve burada URL: https://github.com/dylang/grunt-prompt. Temelde istemleri Gruntfile'a entegre etmenin bir yolu. Project readme'den, aşağıdaki gibi bir şey yaparsınız:

grunt.initConfig({ 
    prompt: { 
    target: { 
     options: { 
     questions: [ 
     { 
      config: 'config.name', // arbitray name or config for any other grunt task 
      type: '<question type>', // list, checkbox, confirm, input, password 
      message: 'Question to ask the user', 
      default: 'value', // default value if nothing is entered 
      choices: 'Array|function(answers)', 
      validate: function(value), // return true if valid, error message if invalid 
      filter: function(value), // modify the answer 
      when: function(answers) // only ask this question when this function returns true 
     } 
     ] 
    } 
    }, 
}, 
}) 
+1

Yanıtınızı yeni [sonra] (http://jsfiddle.net/xoLbweys) yöntemini içerecek şekilde güncelleştirmelisiniz: https: //github.com/dylang/grunt-prompt#release-history –

+1

Şimdi yerine Gulp kullanıyorum Grunt, eğer bu cevap güncel değilse, güncellemeyi çekinmeyin. –

1

Evet, böyle bir şey yapabilirsiniz: Bazı argümanlar geçmek için nasıl Daha fazla bilgi edinmek ve kaynak için

grunt.registerTask('makePost', 'Make a new post dir.', function(n) { 
    if (n == null) { 
    grunt.log.warn('Post name must be specified, like makePost:PostNameGoesHere.'); 
    } 

    // Run other tasks here 
    grunt.task.run('foo:' + n, 'bar:' + n, 'baz:' + n); 
}); 

Grunt FAQ bak.

İlgili konular