Narwhals Poke Mammals

    hx

    0.0.11 • Public • Published

    hx

    CMD 打包工具

    内部参考browserify , 用流的方式实现构建打包流程 支持transform插件 可以与gulp 无缝结合

    Usage

    从 NPM 中安装:

    npm install hx

    简单run:

    var hx = require("hx");
    var d = hx({
        "entry": "./scripts/index.js", //入口文件是 必填
        "base": "./", //项目根目录  可选
        "alias": { //路径替换 可选
            "zepto": "lib/zepto/zepto",
        },
        "output": { //如果是自己打包,不依赖gulp等其他工具, 此项为必填
            "dir": "output", //输出目录
            "name": "result.js", //打包文件的名字
        }
    })
    d.run();
    

    与 gulp 结合

    var source = require('vinyl-source-stream');
    var buffer = require('vinyl-buffer');
    //合并js
    gulp.task('js-concat', function() {
        var config = {
            "entry": "./scripts/index.js", //入口文件是 必填
            "base": "./", //项目根目录  可选
            "alias": { //路径替换 可选
                "zepto": "lib/zepto/zepto",
            },
            "name": "result.js", //打包文件的名字
        }
        var d = hx(config);
        return d.run()
            .pipe(source(config.name))
            .pipe(buffer())
            .pipe(gulp.dest(output + "/"));
    });
    

    transform 插件

    /**
     * try catch 插件
     * 在每个的函数外部包裹一层try catch 
     */
    var through = require('through2');
    
    module.exports = function(file, opts) {
        console.log(file)
        var data = '',
            stream = through(write, end);
    
        return stream;
    
        function write(buf, enc, next) {
            data += buf;
            next();
        }
    
        function end() {
            var result = "try {" + 
                         data +
                         "} catch(error) {alert(error)}";
            stream.push(result);
            stream.push(null);
        }
    };
    
    
    /**
     * remove 插件
     * 不想打包指定的文件
     */
    var through = require('through2');
    
    var filter = "xxx";
    
    module.exports = function(file, opts) {
        var data = '',
            stream = through(write, end);
    
        return stream;
    
        function write(buf, enc, next) {
            data += buf;
            next();
        }
    
        function end() {
            result = data;
            if (file.indexOf(filter) !== -1) {
                //文件名中有xxx,该文件以及该文件的依赖不会被打包进来
                result = "";
            }
            stream.push(result);
            stream.push(null);
        }
    };
    
    
    
    //添加transform
    hx.transform(transformname1);
    hx.transform(transformname2);
    

    巧妙利用transfrom 插件与AST(uglify)语法树,可以非常灵活的实现任何事情! 比如去掉文件内容里的alert/console神马的,都是很容易的。

    有很多不足

    懒人不解释,爱折腾的程序员欢迎交流

    Keywords

    none

    Install

    npm i hx

    DownloadsWeekly Downloads

    0

    Version

    0.0.11

    License

    none

    Last publish

    Collaborators

    • circlesmall