CLI命令行
什么是CLI?它是command-line interface的缩写,中文翻译为“命令行界面”,我们一般就直接用命令行代替了。DOS就是典型的命令行操作系统,早期的unix和linux也是,后来linux用上了开源的桌面引擎,也具备了桌面系统,不过仍然保留着CLI,特别是作为远程服务器,通过CLI对服务器进行操作可以节省网络宽带,可以快速完成一些任务。
安装gulp-cli
Gulp CLI就是说可以在命令行里面运行gulp相关的命令。这就依赖于gulp-cli,因此,我们必须先安装gulp-cli。
如果我们不会在命令行下使用gulp,也可以不用安装gulp-cli。但是如果我们大部分情况下,还是在开发的时候通过gulp自动完成我们想要的一些任务,所以我们大部分情况下都会在命令行中执行gulp任务。
$ npm install -g gulp-cli
gulp-cli使用
gulp cli使用非常简单,在命令行里可以这样输入:
$ gulp # 如果后面没有跟任务名称,就直接默认使用default这个任务
$ gulp my_task
$ gulp one_task two_task
参数标记
gulp 只有你需要熟知的参数标记,其他所有的参数标记只在一些任务需要的时候使用。
- -v 或 --version 会显示全局和项目本地所安装的 gulp 版本号
- --require module_path 将会在执行之前 reqiure 一个模块。这对于一些语言编译器或者需要其他应用的情况来说来说很有用。你可以使用多个--require
- --gulpfile gulpfile_path 手动指定一个 gulpfile 的路径,这在你有很多个 gulpfile 的时候很有用。这也会将 CWD 设置到该 gulpfile 所在目录
- --cwd dir_path 手动指定 CWD。定义gulpfile查找的位置,此外,所有的相应的依赖(require)会从这里开始计算相对路径
- -T 或 --tasks 会显示所指定 gulpfile 的 task 依赖树
- --tasks-simple 会以纯文本的方式显示所载入的 gulpfile 中的 task 列表
- --color 强制 gulp 和 gulp 插件显示颜色,即便没有颜色支持
- --no-color 强制不显示颜色,即便检测到有颜色支持
- --silent 禁止所有的 gulp 日志
举个栗子:
$ gulp --gulpfile gulpfile.es6.js
$ gulp task
$ gulp --gulpfile gulpfile.js
$ gulp task
上面执行了两次gulp task
任务,但是因为第一次和第二次对应的gulpfile不同,在两个gulpfile里面,可能task任务的具体内容不同,所以两次任务的执行结果也可能不一样。
使用自己的参数
我知道你会想到一个问题,可不可以在执行gulp任务的时候,传入参数?gulp默认并没有支持这项功能,但这并不代表我们不可以做到,因为我们可以使用其他的包来得到命令行中的参数。
在命令行中,一般短横线表示参数,但是不同的软件不一样,比如下面这几种都经常看到:
-v
--version
-name my_name
--name my_name
-name=my_name
--name=my_name
这些并没有统一的标准,但我个人而言,更倾向于-v
和--name=my_name
这两种,第一种是缩写,比如-v
实际上表示的是-version
,但用-v
可以更加简单,而且用一个短横线表示这个参数不需要值。第二种是两个短横线加参数名加等号加参数值,这种表达方法非常直观,普通人大部分都看得懂。基于这种想法,我使用了自己写的process.args,你可以引用我写的这个模块,实现CLI参数的风格。
下面具体讲一下process.args的使用方法:
1)下载到本地
$ git clone https://github.com/tangshuang/process.args.git
2)在gulpfile.js文件中引用它
var args = require('./process.args')(true);
var gulp = require('gulp');
gulp.task('my_task',function(){
if(args.d) {
//...
}
if(!args.name) {
console.log('There must be name.')
return;
}
var name = args.name;
console.log('Your name is ' + name);
});
3)在命令行中按照process.args的规范使用参数进行执行
$ gulp my_task -d --name="Nicok"
赶紧自己尝试一下吧。关于gulpfile的东西,会在下一节详细介绍。