编者按:本文作者刘观宇,360 奇舞团高级前端工程师、技术经理,W3C CSS 工作组成员。
标题很绕口,不过确实是一个很常见的需求。
众所周知,NodeJS程序开发简便且容易实现跨平台。但是,当你开发了一个NodeJS程序,想要分发给其他人运行的时候,你会发现,你往往需要对方也来安装一个NodeJS环境。理想的方式是,我们可以把我们的程序打包成一个可执行文件,这样,就可以直接在对方的电脑上运行你的程序了;同时,我们将代码打成二进制形式,可以在一定程度上保护源代码以及API等处理的逻辑。
那么,能不能解决这样的需求呢?可以的。有很多程序包可以做到这件事情:pkg、nexe、node-packer、enclose,当然,对于使用web开发的程序,你还可以使用electron来开发,除了打包本身,还提供了GUI能力。
如果只是命令行的跨平台,不妨试试pkg,它可以在某一个平台下将你的NodeJS程序打包进一个可执行程序,并且可以在单一平台,打出主流的Windows、Mac、Linux下的运行程序。
我们来简单尝试一下pkg。你可以按如下方法安装pkg:npm install pkg -g。这样,你就在全局的命令行中安装了这个工具。
为了测试,我们需要一个实际的NodeJS库。我们就来做一个简单NodeJS库:prettyJson。你可以输入如下代码:
function pretty(filePath){
return JSON.stringify(JSON.parse(require('fs').readFileSync(filePath