NodeJS学习使用过的童鞋们都知道,可以利用V8来解析运行javascript程序, 我们在写一个server(一般都是使用NodeJS建立http/https server), 如果是云平台,都会直接把js代码上传上去,因为云平台的账户都是自己的,那么客户端的用户是看不见server的code的,那么我们一般的应用server呢?比如你需要把程序安装在客户那边的时候,你的javascript code需要保密吧?同时为了运行javascript代码,我们需要安装node, 而node程序有很多版本,怎么跟其它软件统一版本呢?最好是既不能暴露源代码,有能不要安装其他的程序比如node, 那么pkg就是其中的一个选择,它将所有的js code编译成二进制, 并且直接把node的code打包进去,形成一个exe, 直接双击运行,不需要安装node,那么客户机器上安装的Node版本就跟咱们的server无关了。
在使用pkg进行编译的时候,使用起来简单,但是编译的时候有一些注意的地方:
1. 如果有native addon的话,pkg不支持将addon (.node文件)打包进exe, 所以如果自己写的.node文件或者引用的module里面有.node文件,需要打包完之后将.node文件放到跟exe一个目录里面。
2. 检查资源的时候,pkg在打包的时候,要对目录进行判断,比如require(路径)或者path.join(路径)。但是对于一些特殊引用例如:
require('./build/' + cmd + '.js')
path.join(__dirname, 'views/' + viewName)