处理器
处理器是针对文件映射过程中对文件内容进行修改的处理单元
安装处理器
以bone-act-less作为例子
$ npm install bone-act-less --save-dev
使用处理器
和node.js中加载模块的方式不同,bonefile.js里使用bone.require函数加载处理器模块
var bone = require('bone');
var less = bone.require('bone-act-less');
使用act()函数加载处理器,act()函数可以多次调用来添加多个处理器,处理器的执行顺序和act()函数的调用顺序一致
var bone = require('bone');
var less = bone.require('bone-act-less');
var cleancss = bone.require('bone-act-cleancss');
bone.dest('dist')
    .src('~/src/less/style.less')
    .act(less)
    .act(cleancss);
传递参数给处理器
bone.dest('dist')
    .src('~/src/less/style.less')
    .act(less({
        ieCompat: false
    }));
过滤器
bone在调用处理器之前会经过过滤器筛选,过滤器通过判断文件的路径信息来决定是否使用该处理器
一般处理器模块内部设置了缺省的过滤器参数,处理器模块可以选择仅处理哪些类型的文件,以bone-act-less为例
bone.dest('dist')
    .src('~/src/main.js')
    .act(less); // less处理器只处理.less后缀的文件
若想自定义处理过滤内容可以通过传递filter参数来修改,自定义的过滤器参数会覆盖缺省的参数
bone.dest('dist')
    .src('~/src/css/style.css')
    .act(less({}, {
        filter: {
            ext: ['.css']
        }
    }));
filter参数也可以传递函数,下面是所有可以传递的数据结构
bone.dest('dist')
    .src('~/src/css/style.css')
    .act(less({}, {
        filter: {
            ext: ['.css'], // 优先判断后缀
            name: 'style',
            base: 'style.css'
        }
    }));
bone.dest('dist')
    .src('~/src/css/style.css')
    .act(less({}, {
        filter: function(fileInfo) { 
            //  fileInfo = {
            //      source: '/work/project/src/css/style.css',
            //      sourceParsed: {
            //          root: '/',
            //          dir: '/work/project/src/css',
            //          base: 'style.css',
            //          ext: '.css',
            //          name: 'style' 
            //      },
            //      destination: '/work/project/dist/style.css',
            //      destinationParsed: {
            //          root: '/',
            //          dir: '/work/project/dist',
            //          base: 'style.css',
            //          ext: '.css',
            //          name: 'style'
            //      }
            //  }
            return true;
        }
    }));
自定义简易的处理器
若想快速定义一个简易的处理器可以通过bone.wrapper函数
bone.dest('dist')
    .src('~/src/css/style.css')
    .act(bone.wrapper(function(buffer, encoding, callback) {
        callback(null, buffer);
    }, {
        filter: {
            ext: '.css'
        }
    }));
处理器开发相关的文档请参阅处理器开发
常用处理器
- bone-act-less less编译器
 - bone-act-sass sass编译器
 - bone-act-concat 文件合并
 - bone-act-include include功能
 - bone-act-htmllayout 为html文件提供layout功能
 - bone-act-babel babel
 - bone-act-uglify uglify压缩器
 - bone-act-cleancss css压缩器