2013-05-19 7 views
8

Sto tentando di utilizzare Grunt per creare una directory in un progetto per nuovi post su un blog. Crea essenzialmente una directory all'interno di una directory posts denominata YYYYMMDDDD-PostNameInPascalCase.È possibile richiedere all'utente l'immissione di qualsiasi attività grunt?

Per fare ciò, dovrei richiedere all'utente il nome del post ogni volta che eseguo l'attività. So che grunt-init chiede agli utenti di creare progetti dai modelli di progetto, ma sono curioso di sapere se c'è un modo per farlo all'interno del file Gruntfile.js per un progetto già stabilito.

Qualche idea?

+0

intendi su qualsivoglia? Ti piace chiederti un input prima di eseguire qualcosa come grunt-contrib-compass? – coma

+0

@coma Yup - esattamente. Ho la sensazione che sto desiderando qui. Anche se fosse necessario modificare un compito specifico, andrebbe bene anche questo. – mbeasley

risposta

13

È passato un po 'di tempo da quando è stata posta questa domanda, ma c'è un progetto su Github che tenta di fare ciò che l'interrogante stava cercando. Si chiama grunt-prompt e ecco l'url: https://github.com/dylang/grunt-prompt. È fondamentalmente un modo per integrare i prompt nel Gruntfile. Dal readme del progetto avresti fatto qualcosa del tipo:

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

Dovresti aggiornare la tua risposta per includere il nuovo metodo [then] (http://jsfiddle.net/xoLbweys): https: //github.com/dylang/grunt-prompt#release-history –

+1

Ora uso Gulp invece di Grunt, quindi se questa risposta è superata, sentitevi liberi di aggiornarla. –

1

Sì, si può fare qualcosa di simile:

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); 
}); 

Per di più informazioni e la fonte su come passare alcuni argomenti un'occhiata alla Grunt FAQ.

Problemi correlati