egret 引擎分析之一————egret 命令的时候发生了什么
egret命令:
通过which egret 看到是是执行的
/usr/local/bin/egret
这是一个快捷方式,其原生是/usr/local/lib/node_modules/egret :
这个egret文件的内容是shell脚本,如下:
#!/bin/sh basedir=`dirname "$0"`#执行命令 dirname "$0",即获取当前Shell程序的路径,这个地方就是egret.sh这个shell脚本文件的路径。 #uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等) case `uname` in *CYGWIN*)#如果是windows系统,将windows的格式转换成linux的格式 basedir=`cygpath -w "$basedir"`;#cygpath命令可以将Windows本地文件名转换为Cygwin POSIX样式的路径名,反之亦然。 esac
#basedir是快捷方式的路径,即:/usr/local/bin/egret。
#如果存在这个EgretEngine文件。 if [ -f "$basedir/../lib/node_modules/egret/EgretEngine" ]; then
#拷贝这个文件的内容,这个内容是存储的路径:/Applications/EgretLauncher.app/Contents/Resources/app/engine/mac
EGRET=`cat "$basedir/../lib/node_modules/egret/EgretEngine"`; else EGRET=$basedir/../lib/node_modules;#否则就是这个路径。 fi EGRET_CLT=$EGRET/selector.js;#找到的是EgretLauncher.app目录下的引擎目录下的selector.js文件。 if [ -x "$EGRET/node" ]; then#$EGRET目录下有node文件。就用这个node文件去执行 node命令。即:node --no-deprecation --max-old-space-size =2000 "$EGRET_CLI" "$@" "$EGRET/node" --no-deprecation --max-old-space-size=2000 "$EGRET_CLT" "$@" ret=$? else node --no-deprecation --max-old-space-size=2000 "$EGRET_CLT" "$@"#否则执行用node执行,不指定node的目录了。 最大内存为2000mb,就是2G内存。 禁止弃用警告⚠️。 $@执行传入参数是所有参数。 ret=$? #上个命令的退出状态,或者返回值。 fi exit $ret 返回执行结果。
这个egret shell脚本可以看作是部署脚本。
所以具体内容就可以看selector.js文件里面的了。