NodeJS项目如何打包成可执行文件

 更新时间:2023年10月30日 10:58:53   作者:subsistent  
这篇文章主要介绍了NodeJS项目如何打包成可执行文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

引言

我们都知道nodejs的项目本身是没办法编译成二进制可执行文件的,这给我们很多的业务场景造成了一些问题,比如要给客户演示程序的时候,可能还得安装node环境,然后在安装一堆的依赖包,这还必须是网络环境较好的情况下,而有时候,一般企业如果安全看的特别重,限制在局域网内访问互联网,那么连包都没办法安装,显然对于你和对于客户都是不友好的情景。

还有一种情况:如果我们演示项目时,把代码交给对方部署,我们自己也不放心啊:Nodejs代码是明文JS代码,代码泄露怎么办?

当然,防代码泄露可以用JShaman平台对JS代码进行混淆加密。

pkg可以直接将nodejs项目打包成可执行文件,直接可以在没有node环境下的freebsd,linux,alpine,macos,win上运行。

pkg打包的原理

pkg实际上并不是直接将程序转换成可执行文件,而是将node环境一起打包到了程序中,这样就可以做到不用在没有node环境下的电脑上运行node项目了,是不是很方便。

下面我就将带领大家一起来看下如何使用pkg打包。

测试用例使用的是nodejs的express

使用场景

  • 在没有来源的情况下制作商业版的应用程序
  • 在没有来源的情况下制作应用的演示/评估/试用版
  • 立即为其他平台制作可执行文件(交叉编译)
  • 制作某种自解压存档或安装程序
  • 无需安装Node.js和npm来运行打包的应用程序
  • 无需下载无数个文件npm install来部署您的应用程序。将其部署为单个文件
  • 将您的资产放在可执行文件中,使其更具可移植性
  • 针对新的Node.js版本测试您的应用程序而不安装它

举例

简单看下项目的目录结构和代码,首先你得初始化一个express项目,添加express的依赖

运行一些index.js文件,浏览器打开看下效果

我们这是直接在项目中运行的,结果如上图所示,现在我们的项目还是一个js文件,然后相互依赖,接下来我们使用pkg

安装(因为电脑是windows系统,就在windows系统下运行)

安装非常简单,需要全局安装

npm install -g pkg

然后我们使用pkg --help先看下有哪些可用的命令

pkg可以一次为多个目标计算机生成可执行文件。

可以通过--targets 选项指定以逗号分隔的目标列表。规范目标由3个元素组成,例如用短划线分隔,node6-macos-x64或者node4-linux-armv6

配置

打包过程中pkg会解析项目中的资源,检测到require,遍历项目的依赖项并将它们包含到可执行文件中。

有些时候我们需要手动加入资源文件路径,比如我们这个项目中的views,我们需要改一下package.json

"pkg": { "assets": "views/**/*" }

打包(命令很简单)

pkg index.js

然后需要等待一段时间,最终结果如下

我们打开我们的index-win.exe测试下

运行成功,然后打开浏览器,和之前一样的效果

总结

pgk是一个将nodejs项目打包成可执行文件的工具,我们可以用它做很多事情,本文只是简单举例,更多复杂的配置,可以配合官网介绍,然后运用到自己项目中。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Express笔记之动态渲染HTML(新手入坑)

    详解Express笔记之动态渲染HTML(新手入坑)

    这篇文章主要介绍了详解Express笔记之动态渲染HTML(新手入坑),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • nodejs使用http模块发送get与post请求的方法示例

    nodejs使用http模块发送get与post请求的方法示例

    这篇文章主要介绍了nodejs使用http模块发送get与post请求的方法,结合实例形式分析了nodejs基于http模块实现发送get与post请求具体操作技巧,需要的朋友可以参考下
    2018-01-01
  • 全面解析node 表单的图片上传

    全面解析node 表单的图片上传

    本文给大家介绍分享node全面解析表单的图片上传,本文给大家介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-11-11
  • 测试驱动ChatGPT编程示例详解

    测试驱动ChatGPT编程示例详解

    这篇文章主要为大家介绍了测试驱动ChatGPT编程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Node.js定时任务之node-schedule使用详解

    Node.js定时任务之node-schedule使用详解

    这篇文章主要介绍了Node.js定时任务之node-schedule使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • nodejs的10个性能优化技巧

    nodejs的10个性能优化技巧

    在我接触JavaScript(无论浏览器还是NodeJS)的时间里,总是遇到有朋友有多线程的需求。而在NodeJS方面,有朋友甚至直接说到,NodeJS是单线程的,无法很好的利用多核CPU。那么我们在使用过程中,就要非常注意性能优化了
    2014-07-07
  • 利用Node.js对文件进行重命名

    利用Node.js对文件进行重命名

    最近工作中遇到了对文件进行重命名的需求,后通过node.js实现了,所以下面这篇文章主要给大家介绍了利用Node.js对文件进行重命名的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Node.js自定义对象事件的监听与发射

    Node.js自定义对象事件的监听与发射

    这篇文章介绍了Node.js自定义对象事件监听与发射的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • node NPM库增强版globby Promise使用学习

    node NPM库增强版globby Promise使用学习

    这篇文章主要为大家介绍了node NPM库增强版globby Promise使用学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 提高NodeJS中SSL服务的性能

    提高NodeJS中SSL服务的性能

    尽管OpenSSL露出惊天漏洞,但是基于SSL的加密协议还是应用得最广泛的,这只是OpenSSL这个开源软件本身的问题(详情: OpenSSL是坑货写的),下面这篇文章提供了一些如何在NodeJS中,提高HTTPS性能方面的技巧
    2014-07-07

最新评论