利用 EncloseJS 来打包、加密和保护 Node.js 代码
2016-05-23 00:00
330 查看
Node.js 从来都不是一个面向传统行业的解决方案,无论是安装还是部署,当然也就没有打包工具,更没有考虑如何加密或保护代码,不过在实际部署中,总会碰到:
·想把程序打包为一个单文件
·想让别人不那么方便的获取源代码,对代码做基本的加密或保护
·不想每次都
·想更方便的进行大规模部署
绝大多数情况下,我们都不是那个首次面对某个问题的人。而这些需求实在是太普通了,开源的,收费的解决方案都有。EncloseJS 就是一个收费方案。
·打成的包直接运行,无需
·打成的包运行时不依赖 Node.js 和 npm
虽然还有制作解压缩包和配合 node-thrust 打包 GUI 应用之类,不过这几个基本不是这里要关心的。
·redis
·http
·socket.io
·generic-pool
·nutcracker(有依赖,但没有使用)
EncloseJS 打包,如果只是打包 Node.js 的基本代码文件,那直接使用命令行就够了,当然如果需要包括的文件和目录比较多,可以使用单独的文件来指定,具体可参考文档。
![](http://mmbiz.qpic.cn/mmbiz/81OkK2TTXPh1JibfhLBFDAPgyTibhu5pNTzicLMg8DwRXPfbYBlZXNrbJKKsIFOuNVBiaXNVmMP9xUVzjoWbe4YFbw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1)
这里使用的几个参数作用如下:
打包速度还是很快的,结果如下:
![](http://mmbiz.qpic.cn/mmbiz/81OkK2TTXPh1JibfhLBFDAPgyTibhu5pNTmiakE3YAjkAdICo9rjejrmE3eT6olveCHDpX6mH0Exy0iaNbnpjfBehg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1)
打包另外一个项目时,发现对
对比其它的方案,EncloseJS 还是非常有优势的,至少打包这个测试项目时是一次性成功。它的试用版是有限制的,运行的时候,会打印一个试用提示,还有网络连接数和进程运行时间的限制。购买订阅的价格是一年100刀,对于企业来讲也不贵。
nexe / jxcore 。
由于上传附件及文字限制,有时部分图片、文字可能显示不了,详情请见:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000564&idx=3&sn=013c60247a107414deabdf5cc8781742#rd
欢迎大家一起交流。
扫描以下二维码,获取更多更精美文章!(扫码关注有意向不到的惊喜的哦!!)
![](http://static.oschina.net/uploads/space/2016/0523/193225_1wGA_2755985.jpg)
关注我们微信订阅号( uniguytech100) 与服务号(uniguytech),获取更多更精美文章!
也欢迎加入【大家技术网讨论QQ群】,群号码:256175955,请备注你个人的介绍!让我们一起聊聊it的那些事!
·想把程序打包为一个单文件
·想让别人不那么方便的获取源代码,对代码做基本的加密或保护
·不想每次都
npm i
·想更方便的进行大规模部署
绝大多数情况下,我们都不是那个首次面对某个问题的人。而这些需求实在是太普通了,开源的,收费的解决方案都有。EncloseJS 就是一个收费方案。
EncloseJS 可以做什么?
·将源代码打成一个单文件·打成的包直接运行,无需
npm i等安装工作
·打成的包运行时不依赖 Node.js 和 npm
虽然还有制作解压缩包和配合 node-thrust 打包 GUI 应用之类,不过这几个基本不是这里要关心的。
EncloseJS 安装
试用版安装非常简单,直接使用npm i -g enclose即可。不过需要下载的安装包有好几个,我在阿里云的服务器尝试了好几次都没有成功。
怎么用?
我以手头的一个 Socket.io 项目为例做了一个测试,该项目依赖如下:·redis
·http
·socket.io
·generic-pool
·nutcracker(有依赖,但没有使用)
EncloseJS 打包,如果只是打包 Node.js 的基本代码文件,那直接使用命令行就够了,当然如果需要包括的文件和目录比较多,可以使用单独的文件来指定,具体可参考文档。
这里使用的几个参数作用如下:
·-l info:显示的内容的级别,
info会显示出具体打包的文件列表
·x:打包为 x64
·-o ./sio:打包后的文件,存储到当前目录,命令为
ess
·~/code/eschool_server/bin/socket:Node.js 应用的入口文件,也就是
node命令执行的那个文件。
打包速度还是很快的,结果如下:
打包另外一个项目时,发现对
require语句中使用字符串拼接的路径支持会有问题。
对比其它的方案,EncloseJS 还是非常有优势的,至少打包这个测试项目时是一次性成功。它的试用版是有限制的,运行的时候,会打印一个试用提示,还有网络连接数和进程运行时间的限制。购买订阅的价格是一年100刀,对于企业来讲也不贵。
其它的选择
开源的方案也有几个,比如:nexe / jxcore 。
由于上传附件及文字限制,有时部分图片、文字可能显示不了,详情请见:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000564&idx=3&sn=013c60247a107414deabdf5cc8781742#rd
欢迎大家一起交流。
扫描以下二维码,获取更多更精美文章!(扫码关注有意向不到的惊喜的哦!!)
![](http://static.oschina.net/uploads/space/2016/0523/193225_1wGA_2755985.jpg)
关注我们微信订阅号( uniguytech100) 与服务号(uniguytech),获取更多更精美文章!
也欢迎加入【大家技术网讨论QQ群】,群号码:256175955,请备注你个人的介绍!让我们一起聊聊it的那些事!
相关文章推荐
- NodeJS学习——URL
- NodeJS学习——Query String
- 13 款惊艳的 Node.js 框架——第1部分
- Node.js:Express and Waterline
- 运行nodejs的blog程序遇见问题
- hive学习之五:java通过zookeeper获取active namenode地址。
- gulp-express实现node-express项目实时刷新
- 为什么我又从 Node.js 回到 Python
- 利用nvm管理nodejs
- 利用N来管理nodejs的版本问题
- Reverse Nodes in k-Group
- node读书小记
- Nodejs Error: EMFILE
- Hibernate的SqlNode cannot be PathNode异常
- 在ZedBoard开发板上部署Node.js(v6.2.0)服务
- 通过ffi在node.js中调用动态链接库
- 117. Populating Next Right Pointers in Each Node II
- 116. Populating Next Right Pointers in Each Node
- Node.js 文件系统
- 读取json并解析成JsonNode树