# eSync

    otp21.2+
    Erlang即时重新编译和重新加载！

## 基于 [fsnotify](https://github.com/fsnotify/fsnotify) 跨平台文件系统通知。

## 改造自 [sync](https://github.com/rustyio/sync)

## 封装的监听文件项目[fileSync](https://github.com/SisMaker/fileSync) 如果要自己构建执行文件, 拉取监听文件项目, 然后 go build 复制执行文件到该工程的 priv 目录即可

# 特点

    本项目实现了自带编译与加载功能，另外支持额外的编译命令，但是执行额外的编译命令是通过os:cmd(),会阻塞VM不是很建议使用.
    启动后，eSync会收集监听目录下的源文件和编译选项等的信息。
    不仅适用于开发模式，也可以在生产环境中运行。
    注意：linux下拉取项目后  需要给priv目录下的执行文件添加执行权限

# 使用

    启动自动编译与加载 
        eSync:run().
    暂停自动编译与加载
        eSync:pause().
    停止自动编译应用
        eSync:stop().    
    启动或者关闭集群同步加载
        eSync:swSyncNode(TrueOrFalse).
    设置编译与加载日志提示
        eSync:setLog(Val).
    设置加载后的钩子函数(支持匿名函数， {Mod, Fun}(Fun函数只有一个参数)格式， 以及他们的列表组合）
        eSync:setOnMSync(FunOrFuns).   
        eSync:setOnCSync(FunOrFuns). 

# 配置说明

    参见eSync.sample.config
    默认配置为
    [ 
        {eSync，
    	    [
                {compileCmd, undefined},
                {extraDirs, undefined}
                {log, all},     
                {descendant, fix},
                {onMSyncFun, undefined},
                {onCSyncFun, undefined},
                {swSyncNode, false},
                {isJustMem, false},
                {debugInfoKeyFun, undefined}
            ]      
        } 
    ]