命令行CLI
bone-cli 模块是bone的命令行的辅助模块,通过命令行来对bone进行操作,该模块没有集成在bone内部,需要单独安装
安装
通过npm安装,这是全局模块,安装后可以在命令行中使用bone命令
$ sudo npm install -g bone-cli
注:安装到全局需要使用sudo提权
bone-cli会载入你项目目录下的bone模块,并拓展bone对象的方法
bonefile.js文件
bonefile.js是配置文件,该文件放在项目根目录下,bone-cli自动查找并载入这个文件并使用bonefile.js所在的文件夹路径初始化bone
创建bonefile.js后可以通过bone命令查看相应帮助,bonefile.js内容可以参阅 bonefile.js示例
$ bone --help
>
  Usage: bone [options]
  Options:
    -h, --help     output usage information
    -V, --version  output the version number
加载cli模块
通过bone-cli加载bone,会给bone对象添加bone.cli()函数,该函数用来扩展bone的命令
var bone = require('bone');
var connect = require('bone-cli-connect');
bone.cli(connect());
通过上面的代码我们载入了connectcli模块,再次执行bone命令可以看到connect模块已经加载到bone命令上了
$ bone
> 
  Usage: bone [options] [command]
  Commands:
    connect [options] 
       Start a connect web server.
  Options:
    -h, --help     output usage information
    -V, --version  output the version number
通过执行bone connect可以调用connect模块
$ bone connect
重命名cli
var bone = require('bone');
var connect = require('bone-cli-connect');
bone.cli(connect(), {
    alias: 'server'
});
定义任务流
通过bone.task()定义任务流,用来将多个需要执行的命令连成一个任务流
bone.task('release', 'rm -rf ./dist/*', {
    exec: 'name',
    params: '~/dist/*'
});
上面的配置代码定义了一个release任务流,任务流执行的命令不仅限于Bone自身的命令和任务名,也可以是系统的命令
$ bone release
自定义命令
bone.cli()函数的参数接受传入一个函数,该函数接受三个参数,一个是command函数,执行后会返回一个commander对象,第二个参数是bone对象,第三个参数是bone的fs对象
注:commander对象(commander对象是Commander的一个实例)
var bone = require('bone');
bone.cli(function(command, bone, fs) {
    var commander = command('custom');
    command('custom')
        .version('0.0.1')
        .option('-f, --foo', 'enable some foo')
        .option('-b, --bar', 'enable some bar')
        .option('-B, --baz', 'enable some baz');
});
通过bone custom --help查看自定义命令的帮助
追加act
对于cli内使用内建api来读取的文件,bone.cli提供一个参数来追加act,追加的act会影响整个cli内使用内建api读取文件的行为
var connect = require('bone-cli-connect');
var uglify = require('bone-act-uglify');
bone.cli(connect(), {
    act: uglify // connect内读取的文件都会追加uglify的act
});
act参数传递处理器,处理器会改变该命令行的fs api的行为,所有读取的文件最后都会通过该处理器处理
可用模块
- bone-build 增加build命令支持
 - bone-cli-connect 支持bone的api的静态服务器
 - bone-cli-proxy 支持bone的api的代理服务器