1

我正在使用 grunt 的 CLI 可能性来处理我自己的样板grunt init:webdesign-project文件——为此,我创建了一个在其中命名的文件夹webdesign-projectnode_modules/grunt/init一个相应的webdesign-project.js文件。到目前为止,一切都很好。

现在我想用这样的grunt.helper功能插入我自己的“问题”

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

然而这给了我

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)

难道不能用这个函数定义自己的变量吗?

编辑:有人知道这个函数的文档是否存在吗?(还没有找到)

4

2 回答 2

2

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

我建议将现有的初始化模板之一复制到:~/.grunt/tasks/init/webdesign-project.js并从那里修改。

于 2012-10-11T17:28:18.053 回答
2

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

Grunt 的grunt.helper('prompt_for', '...')函数显然只需要一组预定义的值来代替“...”。实际上这并不奇怪,因为其中一些值有一些非常独特的功能(例如,当您输入testproject项目名称时,“(git://github.com/peter/testproject.git)”将自动被提议。

解决方案:查看.jsgruntfile 模板的文件 (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')
于 2012-10-11T19:00:34.177 回答