命令行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());
通过上面的代码我们载入了connect
cli模块,再次执行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的代理服务器