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

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

原文地址:https://www.cnblogs.com/cangqinglang/p/12511583.html

时间: 2024-10-11 11:22:05

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

python编译成windows exe可执行文件

pyInstaller是一款用于将pyhon程序打包成exe文件的工具,pyInstaller不是一个python的包, 只需要把pyInstaller的文件下载下来放到任意为止都可以,也就是说pyInstaller相当于独立出来专门干打包python的工具,这货是工具不是库,下面我来介绍pyInstaller安装方法 pyInstaller是一款用于将pyhon程序打包成exe文件的工具,pyInstaller不是一个python的包, 只需要把pyInstaller的文件下载下来放到任意为止

Swing项目编译成exe,并且打包成安装文件(二)

前面我们讲到了将Swing项目编译成双击可执行的文件exe,这篇我就教大家怎么把exe打包成需要在电脑安装的那种,首先需要一个工具,Inno Setup 编译器, 下载地址,我这个是汉化版的,双击打开之后是这个样子的,选择用[脚本向导]创建新的脚本文件 直接选择下一步 按照相对应的填写就好,之后下一步 基本不做什么修改,直接下一步 应用程序主执行文件就是Swing项目打包成exe的这个文件,如果文件夹里面还有其他东西,记得在下面选择添加文件夹,将整个文件夹都添加进来 ,接着一直下一步即可 点击完

Swing项目编译成exe,并且打包成安装文件(一)

我们一般用java做Swing项目的时候一般都是只能在Myeclipse里面运行,那么怎么把我们的项目打包成exe可以直接双击运行呢? 初始工作:为了不让用户安装java环境,所以我们先新建一个文件夹,里面先把我们的jdk放进去 首先看下我的项目结构 其实很简单,就是一个java项目,支部会是Client继承了Jframe 好啦,那么怎么把这个项目变成exe呢,当然,首先我们要将项目先变成jar,那么在Myeclipse里面将项目变成jar其实简单, 对着项目右键-->Export -->Ja

cordova+vue 项目打包成Android(apk)应用

现在使用vue开发的项目越来越多,使用vue开发的移动端打包就成了最大的问题.现在前端打包方案有好多种,但是综合来说,我比较喜欢用cordova来进行Android和ios的打包,配置完成之后,每次只需要一条命令就可以完成打包. 1.安装cordova这一步的前提是已经完成安装node和npm,如果没有安装的话,请先完成node和npm的安装.node安装:直接进入官网https://nodejs.org/zh-cn/,下载最新版本安装.安装之后在命令行中使用"node -v" 检查安

将Java项目打包成可以独立运行的Jar包

因为一直也没怎么用过Java的原因,所以以前本科上课的时候,在控制台下运行Java程序都是仅仅运行单个的没有第三方库依赖的情况下运行的 那种情况特别简单,只要输入Javac 文件名.java等到编译完,再执行java 文件名 直接就可以运行了,但是,在公司实习需要写一个独立的来运行的项目, 并且可能要通过脚本来定时的运行,这样的话,最好是将项目打包成一个Jar包,然后,使用crontab创建一个新的定期运行的作业就可以了. 这样就可以使用java -jar 项目.jar来定时的运行这个任务. 但

使用ionic将HTML5项目打包成安卓和IOS应用

最近因为项目需要,在研究2天ionic打包应用,现将整个过程记录下来. ionic是一款HTML5手机应用开发框架,可以说是AngularJS移动端解决方案,基于PhoneGap的编译平台,可以实现编译成各个平台的应用程序.一次开发,处处运行. 1.安装ionic 首先需要安装Node.js,安装成功后,在命令行中输入下面指令,安装ionic和cordova npm install -g cordova ionic 可以通过查看版本号来测试是否安装成功,如果显示版本号即安装成功. windows

idea将maven项目打包成war包的方式,以及使用war包

打包WAR过程 首先对项目进行编译.然后执行以下步骤: 单击下图红色方框处  在IDEA右侧出现maven project选项  单击maven project选项,出现Spring MVC Basic Feature菜单,选择 其中的Lifecycle菜单项,展开,执行里面的package命令即可.  到这打包已完成,在项目文件夹/target/下可以找到 *.war 文件. 将war文件部署到tomcat上 我们采用一种比较简单的部署方式: 将war文件拷贝到tomcat安装目录的$TOMC

SpringBoot之通过Maven将项目打包成ROOT.war-yellowcong

在项目中,我们通过maven的插件,将项目达成war包,然后通过jenkins,自动化部署项目. 核心的maven配置文件,下面这一段pom.xml的配置文件. 将项目打包成ROOT.war <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <warName&

AndroidStudio项目打包成jar

前言:在eclipse中我们知道如何将一个项目导出为jar包,现在普遍AndroidStuido开发,这里一步一步详加介绍AS项目打包成jar,jar和arr的使用 一.作用: 为了供其它项目使用,将项目打包成jar 二.步骤(AndroidStudio): 1.像平常一个样新建一个项目(步骤省略)2.(在步骤1的基础上)点击File-->New-->New Module->选择Android Library-->点击Next(如下图:)定义好Library的工程名:library