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的东西,会在下一节详细介绍。

results matching ""

    No results matching ""