Builder

Builder是Broccoli的消费中心,构造函数接收一个节点(Node),它的build()方法输出一个节点(Node)。

输入的节点可能是流过了许多插件之后流出来的节点。插件是输入0,1,n个节点,输出一个节点的对象。从面向对象的角度来表述,如果实现了共同的interface,那么看起来都是节点,从这个意义上来说,插件本身看起来也是一个节点。

节点(Node)到底是什么?

节点就是一个文件系统的目录对象,包装一下,加入了一些属性。在Builder这个消费中心,不管看到的是string或者插件,最终都加工成Node,插件的钩子代码是在变成Node的过程中被触发。

Broccoli几乎整个系统都是基于Promise,为了resolve最终的Node对象,触发整个承诺(Promise)的链条。