【发布时间】:2015-09-22 11:15:15
【问题描述】:
我需要一些关于我的 gulp 任务的帮助。
我有 gulp karma 任务,我想将 karma 配置文件作为参数传递给该任务。 我能够做到这一点。就像在 grunt 中一样,我们可以使用
grunt.option("file")
我们可以将 grunt 任务称为
grunt taskName --file=myFileName
那么我怎样才能用 gulp 达到同样的效果呢?
【问题讨论】:
我需要一些关于我的 gulp 任务的帮助。
我有 gulp karma 任务,我想将 karma 配置文件作为参数传递给该任务。 我能够做到这一点。就像在 grunt 中一样,我们可以使用
grunt.option("file")
我们可以将 grunt 任务称为
grunt taskName --file=myFileName
那么我怎样才能用 gulp 达到同样的效果呢?
【问题讨论】:
gulp 中没有任何内容可以为您解析命令行参数。
喜欢的话可以直接使用node的全局process.argv。
我喜欢使用 yargs 模块来处理我的 gulpfiles 中的参数。
var args = require('yargs').argv;
var karmaFile = argv.file; // for the argument --file="myFileName"
【讨论】:
添加到@kombucha 的答案,这是一个如何使用 process.argv 的示例。如果在你的情况下你通过了:
gulp taskName --file myFileName
(没有 '=' )然后下面将检索文件值:
var filename, i = process.argv.indexOf("--file");
if(i>-1) {
filename = process.argv[i+1];
}
将上述内容转换为用于检索命令行值的通用函数应该足够简单。我以前用过这个效果很好:
function getCLValue(name) {
var i = process.argv.indexOf(name);
return (i>-1) ? process.argv[i+1] : null;
}
【讨论】: