功能
Reduce使用browserify处理JS,depsify处理CSS,两者都通过创建基于Node.js stream的管道来实现。 browserify与depsify的处理管道有同样的结构,具体可参考browserify-handbook。
其中deps
便是依赖解析的阶段,也是Transform起作用的阶段:
每当读取一个模块内容后,先经过Transform的变换,再进行语法解析。
因此,预处理主要是通过Transform来实现。譬如babelify。
更多Transform请见这里。
如何写Transform
所有Transform都是有如下声明的函数:
function myTransform(file, opts) {
return someTransform
}
file
是当前处理的文件路径,opts
是使用Transform时传入的配置。
每个Transform必须返回一个Node.js stream的Transform实例(或Duplex实例)。可以考虑使用through2来快速创建这样一个对象。
具体实例可参见这里。