更好的方法是使用grunt.task.current
which 具有有关当前正在运行的任务的信息,包括name
属性。在一个任务中,上下文(即this
)是同一个对象。所以 。. .
grunt.registerTask('foo', 'Foobar all the things', function() {
console.log(grunt.task.current.name); // foo
console.log(this.name); // foo
console.log(this === grunt.task.current); // true
});
如果build
是其他任务的别名,而您只想知道输入了导致当前任务执行的命令,我通常使用process.argv[2]
. 如果您检查process.argv
,您会看到argv[0]
is node
(因为grunt
是一个node
进程),argv[1]
is grunt
,并且argv[2]
是实际的 grunt 任务(后面是 的其余部分中的任何参数argv
)。
编辑:
来自任务内的console.log(grunt.task.current)
grunt@0.4.5的示例输出(不能有来自非当前任务的当前任务)。
{
nameArgs: 'server:dev',
name: 'server',
args: [],
flags: {},
async: [Function],
errorCount: [Getter],
requires: [Function],
requiresConfig: [Function],
options: [Function],
target: 'dev',
data: { options: { debugPort: 5858, cwd: 'server' } },
files: [],
filesSrc: [Getter]
}