|
@ -1,12 +1,13 @@ |
|
|
# erlSync |
|
|
# erlSync |
|
|
otp21.2+ |
|
|
otp21.2+ |
|
|
改造自 [sync](https://github.com/rustyio/sync) 有兴趣可以了解一下, 本项目仅仅在此基础做了一些封装改动和优化,工作原理并无差别 |
|
|
|
|
|
# 工作原理 |
|
|
|
|
|
启动后,Sync会收集有关已加载模块,ebin目录,源文件,编译选项等的信息。 |
|
|
|
|
|
然后,Sync会定期检查源文件的最后修改日期。如果自上次扫描以来文件已更改,则Sync会使用上一组编译选项自动重新编译模块。如果编译成功,它将加载更新的模块。否则,它将编译错误输出到控制台。 |
|
|
|
|
|
同步还会定期检查任何梁文件的上次修改日期,如果文件已更改,则会自动重新加载。 |
|
|
|
|
|
扫描过程会在运行的Erlang VM上增加1%到2%的CPU负载。已经采取了很多措施将其保持在较低水平。 |
|
|
|
|
|
但这仅适用于开发模式,请勿在生产中运行。 |
|
|
|
|
|
|
|
|
#基于 [fsnotify](https://github.com/fsnotify/fsnotify) 跨平台文件系统通知。 |
|
|
|
|
|
#改造自 [sync](https://github.com/rustyio/sync) |
|
|
|
|
|
#封装的监听文件项目[fileSync](https://github.com/SisMaker/fileSync) .如果要自己构建执行文件, 拉取监听文件项目, 然后 go build 复制执行文件到该工程的 priv 目录即可 |
|
|
|
|
|
|
|
|
|
|
|
# 特点 |
|
|
|
|
|
本项目实现了自带编译与加载功能,另外支持额外的编译命令,但是执行额外的编译命令是通过os:cmd(),会阻塞VM不是很建议使用. |
|
|
|
|
|
启动后,erlSync会收集监听目录下的源文件和编译选项等的信息。 |
|
|
|
|
|
不仅适用于开发模式,也可以在生产环境中运行。 |
|
|
|
|
|
|
|
|
# 使用 |
|
|
# 使用 |
|
|
启动自动编译与加载 |
|
|
启动自动编译与加载 |
|
@ -26,16 +27,11 @@ |
|
|
[ |
|
|
[ |
|
|
{erlSync, |
|
|
{erlSync, |
|
|
[ |
|
|
[ |
|
|
{moduleTime, 30000}, |
|
|
|
|
|
{srcDirTime, 6000}, |
|
|
|
|
|
{srcFileTime, 6000}, |
|
|
|
|
|
{compareBeamTime, 4000}, |
|
|
|
|
|
{compareSrcFileTime, 4000}, |
|
|
|
|
|
{srcDirs, undefined} |
|
|
|
|
|
{log, all}, |
|
|
|
|
|
{descendant, fix}, |
|
|
|
|
|
{onlyMods, []}, |
|
|
|
|
|
{excludedMods, []} |
|
|
|
|
|
|
|
|
{listenPort, 12369}, |
|
|
|
|
|
{compileCmd, undefined}, |
|
|
|
|
|
{srcDirs, undefined} |
|
|
|
|
|
{log, all}, |
|
|
|
|
|
{descendant, fix} |
|
|
] |
|
|
] |
|
|
} |
|
|
} |
|
|
] |
|
|
] |