Node.js 可以使用非选项参数运行的Grunt任务

Node.js 可以使用非选项参数运行的Grunt任务,node.js,gruntjs,Node.js,Gruntjs,我试图用与unixmv命令相同的api编写一个grunt任务 我希望能够使用grunt mv path/to/old/file path/to/new/file来调用它 我希望能够通过访问node的process.argv来实现这一点,但是,当我使用此API调用任务时,grunt试图将path/to/old/file视为我试图运行的另一个任务,抛出了一个错误警告:找不到任务“path/to/old/file”。使用--force继续。并退出 有什么方法可以完成我想做的吗?我想您正在寻找--opt

我试图用与unixmv命令相同的api编写一个grunt任务

我希望能够使用
grunt mv path/to/old/file path/to/new/file来调用它

我希望能够通过访问node的process.argv来实现这一点,但是,当我使用此API调用任务时,grunt试图将
path/to/old/file
视为我试图运行的另一个任务,抛出了一个错误
警告:找不到任务“path/to/old/file”。使用--force继续。
并退出


有什么方法可以完成我想做的吗?

我想您正在寻找
--options
参数

因此,您可以使用
grunt mv--from=path/to/old/file--to=path/to/new/file
调用它,您应该使用from de documentation:

包含命令行参数的数组。第一个元素是 如果是“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

通过使用“:”分隔任务,可以将参数传递给任务,例如

当然,这并不理想。在任务内部,您可以使用
this.args
获取它们的值。看见
举个例子。下面是API文档:

这是我当前的,也是显而易见的实现。我试图绕过对--from=和--to=的需求。哦,我明白了,我认为最明显的是使用grunt mv:path/to/old/file:path/to/new/file,如中所述。啊,这是一个好建议。冒号分隔的方法肯定会节省一些从--to=和--from=的输入,但如果可能的话,我仍然希望找到一种方法来模拟命令行
mv
的api。如果我不使用Grunt,这将是可行的,但我使用Grunt,并且我希望将此任务保留在Grunt中。按建议调用Grunt时,无法通过Grunt的初始化。Grunt将path/to/old/file解释为一个任务,并抱怨找不到该名称的任务。看起来,如果我使用--force运行它,我可能能够进入任务并使用node的process.argv,但是我希望避免开发人员需要为此任务键入--force。
grunt mv:path/to/old/file:path/to/new/file