Skip to main content

Li Zheng flyskywhy@gmail.com

nodec 使用详解

为了加快 nodejs 应用部署速度和加密 JS 源代码,可以使用 nodec 来将 index.js node_modules/ 等等编译为单独一个可执行文件,选择 nodec 的原因见这里的讨论 How to make exe files from a node.js app

内存和交换空间需求

运行 nodec 时需要 10GB 左右的内存和 10GB 左右的交换空间,现在的 Ubuntu 默认安装时的交换文件为 2GB 左右,因此需要 调整 Ubuntu 交换文件

缩减可执行文件尺寸的优化操作

运行 nodec 前可以做一些优化工作,比如将下面的优化操作写到你的自动部署脚本中,参考 gitlab 自动部署 nodejs 应用到阿里云 Kubernetes 集群中

    rm -fr __tests__ android app index.android.js index.ios.js index.web.js ios # 删除后端运行时不需要的文件,以减小 nodec 最终生成的可执行文件大小
rm -fr node_modules # nodec 会自动调用 npm install 的
sed -i -e '/ "react/d' -e '/ "redux/d' -e '/ "rmc-/d' package.json # 去除前端依赖,以加快 nodec 自动调用的 npm install --production 运行速度
sed -i -e "s/^{.*/{\"gitSha\":\"`git rev-parse --short HEAD`\",/" package.json # 如果 nodejs 应用中想要 git 哈希值的话可以这样做,因为 nodec 最终生成的可执行文件内部是不包含 .git/ 的

注意 __dirname 的使用场景

如果可执行文件运行时需要写文件比如 log 输出的,则 nodejs 应用代码里相关路径描述中不能带有

    __dirname + '/access.log'

这样的写法,而需要

'access.log'

否则无法在可执行文件所在的目录中生成 access.log 文件。