2012-10-11 23 views
1

我对我自己的样板使用像这样grunt init:webdesign-project咕噜的CLI准备工作 - 为了这个,我创建了一个名为webdesign-projectnode_modules/grunt/init和相应webdesign-project.js文件夹。迄今为止,一切都很好。自定义grunt.helper值可能吗?

现在我想插入我自己的“问题”,像这样

grunt.helper('prompt_for', 'img_path', 'img') 

grunt.helper功能但是这给了我

TypeError: Cannot set property 'name' of undefined 
at Object.module.exports.grunt.registerHelper.grunt.utils.spawn.cmd (/usr/lib/node_modules/grunt/tasks/init.js:573:17) 
at Task.helper (/usr/lib/node_modules/grunt/lib/util/task.js:117:19) 
at Object.exports.template (/usr/lib/node_modules/grunt/tasks/init/webdesign-project.js:30:11) 
at Object.module.exports.grunt.registerHelper.done (/usr/lib/node_modules/grunt/tasks/init.js:240:27) 
at Object.task.registerTask.thisTask.fn (/usr/lib/node_modules/grunt/lib/grunt/task.js:58:16) 
at Task.<anonymous> (/usr/lib/node_modules/grunt/lib/util/task.js:341:36) 
at Task.start (/usr/lib/node_modules/grunt/lib/util/task.js:357:5) 
at Object.grunt.tasks (/usr/lib/node_modules/grunt/lib/grunt.js:143:8) 
at Object.module.exports [as cli] (/usr/lib/node_modules/grunt/lib/grunt/cli.js:36:9) 
at Object.<anonymous> (/usr/lib/node_modules/grunt/bin/grunt:19:14) 

是不是可以定义使用这个自己的变量功能?

编辑:是否有人知道是否存在此功能的文档? (找不到一个尚未)

回答

2

我想出了如何实现“定制提示” - 如果有人有兴趣:

咕噜的grunt.helper('prompt_for', '...')功能显然只需要一组预定义值代替“...”。其实这应该不会令人惊讶,因为对于其中一些值有一些非常独特的功能(例如,当您输入testproject作为项目名称时,“(git://github.com/peter/testproject.git)”将会自动提出

解决方案:看看该.js文件gruntfile模板(node_modules/grunt/tasks/init/gruntfile.js) - 创建一个自定义的提示是这样的:

{ 
    name: 'img_path', 
    message: 'Name the folder where all image files are located', 
    default: 'img', 
    // warning: '' couldn't find any use for this optional property 
} 

,而不是

grunt.helper('prompt_for', 'img_path', 'img') 
2

您不应该修改或node_modules/文件夹中添加文件,因为他们将在与NPM更新覆盖。看看用于创建自定义初始化模板的init文档:https://github.com/gruntjs/grunt/blob/master/docs/task_init.md#creating-custom-templates

我建议将其中一个现有init模板复制到:~/.grunt/tasks/init/webdesign-project.js并从那里修改。

+0

但我没有'〜/ .grunt /'文件夹 - 我应该创建一个? (已经尝试重新安装grunt几次 - (我在linux上,Ubuntu 12.04是精确的)) - 这正是我所做的;)我复制了jQuery模板并根据我的需要调整它 – Peter

+2

是的,只需创建一个'。初始化模板的主文件夹中的grunt文件夹。 FWIW,这是咕噜V0.4全部更换:) –

+0

那好吧非常感谢你:)不过我不能用也无妨,因为呼噜声将不执行我的'rename.json'(至少不是'“IMG /” :“{%= img_path%} /”'部分我为^^做了这个) – Peter

相关问题