Node.js - 包装



大型Node.js项目通常具有许多依赖项和许多源文件以及其他资产,例如图像、网页、设置文件等。分发 Node.js 项目并将其部署到任何其他环境变得很困难,因此需要对其进行打包,以便可以轻松移植到其他机器上。NPM 仓库上有许多可用的打包工具。本章讨论了 nexe 打包工具,并概述了其他一些打包库。

Nexe(英语:Nexe)

为了演示 Nexe 实用程序的工作原理,我们将使用以下脚本构建一个 ExpressJs 应用程序 -

Index.js


var express = require('express');
var app = express();
var path = require('path');

var bodyParser = require('body-parser');
// Create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })

app.use(express.static('public'));

app.get('/', function (req, res) {
	 	res.sendFile(path.join(__dirname,"index.html"));
})

app.get('/process_get', function (req, res) {
	 	// Prepare output in JSON format
	 	response = {
	 	 	 first_name:req.query.first_name,
	 	 	 last_name:req.query.last_name
	 	};
	 	console.log(response);
	 	res.end(JSON.stringify(response));
})

app.post("/process_post", )
var server = app.listen(5000, function () {
	 	console.log("Express App running at http://127.0.0.1:5000/");
})

'/' 路由从以下脚本呈现 HTML 表单 -

Index.html


<html>
	 	<body>
	 	 		
	 	 	 <form action = "/process_POST" method = "POST">
	 	 	 	 	First Name: <input type = "text" name = "first_name"> 	<br>
	 	 	 	 	Last Name: <input type = "text" name = "last_name"> 	<br>
	 	 	 	 	<input type = "submit" value = "Submit">
	 	 	 </form>
	 	 		
	 	</body>
</html>

Node.js服务器显示以下形式 -

Nexe Utility

上面的 Node.js 应用程序还注册了静态中间件,因此它显示了放置在 static/images 文件夹中的图像。

qikepu Logo

我们现在想为这个Node.js应用程序构建一个自执行文件,其中包含代码、子目录以及单个文件中的资产。Nexe 是一个命令行实用程序,可将Node.js应用程序编译为单个可执行文件。

Nexe的特点

  • 自包含应用程序
  • 能够运行具有不同node.js运行时的多个应用程序。
  • 无需 node / npm 即可分发二进制文件。
  • 更快地启动和部署。
  • 灵活的构建管道
  • 跨平台构建

在 Windows 上安装 Nexe

按如下方式执行Nexe的全局安装 -

npm install nexe -g

您还需要 Netwide Assembler (NASM) 工具。从 www.nasm.us 下载并安装相同的

nexe 实用程序要求在系统上安装 Python。确保 Python 是版本 3.11 到 3.7 之一。

假设您使用的是 64 位 Windows 操作系统的 nexe,您还需要安装 Visual Studio 2022 中的“使用 C++ 进行桌面开发”工作负载。它可以从 aka.ms 安装。

(对于其他操作系统平台,请按照 github.com/nodejs 上的说明进行操作

安装完所有先决条件后,在CMD终端中运行以下命令 -

D:\expressApp>nexe index.js --build windows-x64-20.9.0 –verbose

编译可能需要一段时间,但最终,它将在应用程序文件夹中创建expressApp.exe。

D:\expressApp
│ expressApp.exe
│ index.html
│ index.js
│ package-lock.json
│ package.json
│ users.json

├───node_modules
│ │ .package-lock.json
│ ├───body-parser
│ │ │ HISTORY.md
│ │ │ index.js
│ │ │ LICENSE
│ │ │ package.json
│ │ │ README.md
│ │ │ SECURITY.md
│ │ │ . . .
│ │ │ . . .
│ │ │ . . .
│ ├───express
│ │ │ History.md
│ │ │ index.js
│ │ │ LICENSE
│ │ │ package.json
│ │ │ Readme.md
│ │ │ . . .
│ │ │ . . .
│ │ │ . . .
└───public
└───images
logo.png

从命令行运行它,Node.js服务器将启动。

D:\expressApp>expressapp
Express App running at http://127.0.0.1:5000/

PKG工具

pkg 工具是一个命令行界面,使开发人员能够从Node.JS项目创建可执行文件;允许您在没有安装 Node.JS 的环境中运行该应用程序。

要安装 pkg,请使用命令 −

npm install -g pkg

然后使用 pkg 构建可执行文件

pkg myapp.js

运行上述命令将生成三个程序;即适用于 Windows、macOS 和 Linux 的可执行文件。更多详情,请访问 www.npmjs.com

JXCore

JXcore 是一个开源项目,它引入了一个独特的功能,用于将源文件和其他资产打包和加密到 JX 包中。

根据您的操作系统和机器架构,从 https://github.com/jxcore 下载并安装 JXcore 软件包。

要打包上述项目,您只需进入此目录并发出以下 jx 命令。假设 index.js 是 Node.js 项目的入口文件 -

jx package index.js index

上述命令将打包所有内容,并创建以下两个文件 -

  • index.jxp - 这是一个中间文件,其中包含编译项目所需的完整项目详细信息。
  • index.jx - 这是一个二进制文件,其中包含完整的包,可以发送到您的客户端或生产环境。

考虑您的原始Node.js项目运行如下: -

node index.js command_line_arguments

使用 JXcore 编译包后,可以按如下方式启动 -

jx index.jx command_line_arguments