2013-05-19 29 views
8

Tôi đang cố gắng sử dụng Grunt để tạo một thư mục trong một dự án cho các bài đăng mới lên blog. Về cơ bản, nó sẽ tạo một thư mục bên trong thư mục posts có tên là YYYYMMDDDD-PostNameInPascalCase.Có thể nhắc người dùng nhập liệu trong bất kỳ tác vụ grunt nào không?

Để thực hiện việc này, tôi phải nhắc người dùng đăng tên mỗi khi tôi thực hiện tác vụ. Tôi biết rằng grunt-init sẽ nhắc người dùng tạo dự án từ các mẫu dự án, nhưng tôi tò mò nếu có cách để làm điều này bên trong tệp Gruntfile.js cho một dự án đã được thiết lập.

Mọi suy nghĩ?

+0

ý bạn là gì? như yêu cầu bạn nhập liệu trước khi chạy một cái gì đó như grunt-contrib-la bàn? – coma

+0

@coma Yup - chính xác. Tôi có một cảm giác tôi muốn ở đây. Ngay cả khi nó yêu cầu sửa đổi một nhiệm vụ cụ thể mặc dù, đó sẽ là okay quá. – mbeasley

Trả lời

13

Đã lâu rồi kể từ khi câu hỏi này được hỏi lần cuối, nhưng có một dự án trên Github cố gắng làm những gì người hỏi đang tìm kiếm. Nó được gọi là grunt-prompt và đây là url: https://github.com/dylang/grunt-prompt. Về cơ bản nó là một cách để tích hợp các lời nhắc vào Gruntfile. Từ dự án readme, bạn sẽ làm điều gì đó như:

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

Bạn nên cập nhật câu trả lời của mình để bao gồm phương pháp [then] mới (http://jsfiddle.net/xoLbweys): https: //github.com/dylang/grunt-prompt#release-history –

+1

Tôi sử dụng Gulp ngay bây giờ thay vì Grunt, vì vậy nếu câu trả lời này là lỗi thời, hãy cập nhật nó. –

1

Vâng, bạn có thể làm một cái gì đó như thế này:

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

Đối biết thêm thông tin và nguồn trên làm thế nào để vượt qua một số luận cứ nhìn vào Grunt FAQ.

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