zoukankan      html  css  js  c++  java
  • 将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的依赖

    将NodeJS项目打包,编译成跨平台的可执行文件

     

    将NodeJS项目打包,编译成跨平台的可执行文件

     

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

    将NodeJS项目打包,编译成跨平台的可执行文件

     

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

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

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

    npm install -g pkg

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

    将NodeJS项目打包,编译成跨平台的可执行文件

     

    pkg可以一次为多个目标计算机生成可执行文件。可以通过--targets 选项指定以逗号分隔的目标列表。规范目标由3个元素组成,例如用短划线分隔,node6-macos-x64或者node4-linux-armv6

    • 配置

    打包过程中pkg会解析项目中的资源,检测到require,遍历项目的依赖项并将它们包含到可执行文件中。有些时候我们需要手动加入资源文件路径,比如我们这个项目中的views,我们需要改一下package.json

     "pkg": {
    "assets": "views/**/*"
    }
    将NodeJS项目打包,编译成跨平台的可执行文件

     

    • 打包(命令很简单)
    pkg index.js
    将NodeJS项目打包,编译成跨平台的可执行文件

     

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

    将NodeJS项目打包,编译成跨平台的可执行文件

     

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

    将NodeJS项目打包,编译成跨平台的可执行文件

     

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

    总结

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

    转自https://www.toutiao.com/a6804016732118712843/?timestamp=1584269058&app=news_article&group_id=6804016732118712843&req_id=20200315184418010014041161352A8A5D

  • 相关阅读:
    MySQL 必知必会学习笔记
    jemter 之cookies管理器
    linux shell通配符、元字符、转义符
    linux cut 、awk、grep、sed
    shell脚本的执行方式
    shell概述
    linux 查看用户常用命令
    linux的挂载命令
    linux关机和重启命令
    linux常用压缩格式
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/12511583.html
Copyright © 2011-2022 走看看