可以使用非选项参数运行的Grunt任务
我正在尝试写一个与unix mv命令相同的api任务。
我想能够使用grunt mv path/to/old/file path/to/new/file
来调用它。
我希望能够通过访问节点的process.argv来做到这一点,但是当我使用这个API调用任务时,grunt试图把path/to/old/file
当作另一个我试图运行的任务,抛出Warning: Task "path/to/old/file" not found. Use --force to continue.
的错误Warning: Task "path/to/old/file" not found. Use --force to continue.
Warning: Task "path/to/old/file" not found. Use --force to continue.
并退出。
有没有办法做我想做的事情?
我想你正在寻找 – --options
参数http://gruntjs.com/frequently-asked-questions#options 。
所以你可以用grunt mv --from=path/to/old/file --to=path/to/new/file
来调用它 – grunt mv --from=path/to/old/file --to=path/to/new/file
。
你可以通过用“:”分隔它们来传递参数给你的任务,例如
grunt mv:path/to/old/file:path/to/new/file
这绝对不是理想的。 在你的任务里面,你可以用this.args
来获得它们的值。 有关示例,请参阅https://github.com/Grunt-generate/grunt-generate/blob/master/tasks/generate.js 。 这里是API文档: http : //gruntjs.com/api/inside-tasks
您应该使用de文档中的process.argv :
包含命令行参数的数组。 第一个元素是'node',第二个元素是JavaScript文件的名字。 下一个元素将是任何额外的命令行参数。
在你的情况下:
文件: mv.js
console.log(process.argv[2]); console.log(process.argv[3]);
那么如果你运行: node mv.js path / to / old / file path / to / new / file
这将输出:
path/to/old/file path/to/new/file