调用任务流
任务流是bone中非常重要的一个特性,任务流和Grunt
、Gulp
的任务流概念相同,通过定义一个个的基本的任务单元,依次执行。bone的任务流还提供了调用系统命令的能力。
一个项目往往会有各种各样的辅助脚本,如开发调试、优化压缩、打包部署、在线debug等,不同的脚本可能使用不同的语言实现,也有不同的调用方式,bone提供了一种比较开放的方式能将所有的脚本整合在一起。
bone-cli
模块提供了bone.task
函数实现任务流来处理事物,先看看一个例子
这个示例里定义了一个foo
的任务,这个任务由一个函数组成
一个基本的任务单元由两部分组成,任务名称和处理单元,处理单元可以是字符串、对象、函数,上面的代码中的foo
任务对应的处理单元是一个函数。
var bone = require("bone");
bone.task("foo", function() {
// do something
});
要执行这个任务,通过bone 任务名
的方式执行这个任务
$ bone foo
任务也可以去调用其他任务,下面的示例定义了一个bar
任务,依次调用了bone build
命令和foo
任务,这里参数使用build
而不是使用bone build
,是因为bone已经加载名为build
的cli
var build = require("bone-cli-build");
bone.cli(build());
bone.task("bar", "build", "foo");
当然也可以去加载外部的命令,例如系统命令,以rm
为例子,bar任务依次调用的系统rm命令,bone build
命令和foo
任务
bone.task("bar", "rm -rf ./dist", "build", "foo");
通过对象传递更详细的参数,下面的代码里定义的zoo任务效果和使用rm -rf ./dist
定义的任务一样
bone.task("zoo", {
exec: "rm",
params: {
_: "./dist",
f: null,
r: null
}
})