我正在尝试使用 Grunt 在项目中为博客的新帖子创建一个目录。posts
它本质上会在名为 的目录中创建一个目录YYYYMMDDDD-PostNameInPascalCase
。
为了做到这一点,我每次执行任务时都必须提示用户输入帖子名称。我知道 grunt-init 会提示用户从项目模板创建项目,但我很好奇是否有办法在Gruntfile.js
文件中为已建立的项目执行此操作。
有什么想法吗?
我正在尝试使用 Grunt 在项目中为博客的新帖子创建一个目录。posts
它本质上会在名为 的目录中创建一个目录YYYYMMDDDD-PostNameInPascalCase
。
为了做到这一点,我每次执行任务时都必须提示用户输入帖子名称。我知道 grunt-init 会提示用户从项目模板创建项目,但我很好奇是否有办法在Gruntfile.js
文件中为已建立的项目执行此操作。
有什么想法吗?
自从上次提出这个问题以来已经有一段时间了,但是 Github 上有一个项目试图做提问者正在寻找的东西。它被调用grunt-prompt
,这里是 url:https ://github.com/dylang/grunt-prompt 。它基本上是一种将提示集成到 Gruntfile 中的方法。从项目自述文件中,您将执行以下操作:
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
}
]
}
},
},
})
是的,你可以这样做:
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。