跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScriptNode.js大前端

使用 NCC 和 PKG 将 Node.js 项目打包为跨平台可执行文件

通过 ncc 编译和 pkg 打包工具,可将 Node.js 应用转换为独立的可执行文件。该方案支持 Linux、macOS 和 Windows 系统,无需目标机器安装 Node.js 环境即可直接运行。流程涵盖项目初始化、依赖安装、代码编译及最终二进制生成,适合分发部署场景。需注意二进制文件体积较大且调试受限,动态加载需特殊配置。

HadoopMan发布于 2024/10/25更新于 2026/7/2431 浏览
使用 NCC 和 PKG 将 Node.js 项目打包为跨平台可执行文件

使用 NCC 和 PKG 将 Node.js 项目打包为跨平台可执行文件

很多时候我们需要将 Node.js 应用分发给没有安装运行环境的用户,或者希望部署更轻量。利用 ncc 进行代码编译,再配合 pkg 生成二进制文件,是解决这一问题的成熟方案。下面分享具体的实战流程。

准备工作

首先确保本地已安装 Node.js 环境。初始化一个基础项目:

mkdir my-node-app
cd my-node-app
npm init -y

接着安装业务依赖,这里以 Express 为例:

npm install express

创建入口文件 index.js:

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
    res.send('Hello World!');
});

app.listen(port, () => {
    console.log(`App listening at http://localhost:${port}`);
});

安装构建工具

我们需要两个核心工具:@vercel/ncc 用于编译打包模块,pkg 用于生成可执行文件。建议全局安装以便调用:

npm install -g @vercel/ncc
npm install -g pkg

编译与打包流程

1. 使用 NCC 编译

NCC 会将你的入口文件及其依赖项合并成一个单文件。这步能减少后续打包的体积,并处理 CommonJS/ESM 兼容性问题。

ncc build index.js -m -o dist

参数说明:

  • -m: 开启源码映射(可选,生产环境通常关闭)
  • -o dist: 输出目录

2. 使用 PKG 打包

拿到编译后的文件后,用 pkg 将其封装成对应操作系统的二进制文件。注意,pkg 默认会检测当前系统架构,如果需要多平台支持,通常需要分别在 Linux、macOS 和 Windows 环境下各跑一次,或者配置交叉编译。

pkg dist/index.js --targets node18-linux-x64,node18-win-x64,node18-macos-x64

*注:如果不指定 targets,生成的文件仅在当前系统可用。上述命令示例展示了如何一次性生成三个平台的版本,实际使用时请根据需求调整。

运行验证

打包完成后,在对应目录下即可直接运行,无需安装 Node.js:

# Linux / macOS
./my-node-app

# Windows
my-node-app.exe

注意事项

  1. 内存占用:生成的二进制文件体积较大,因为它内置了 V8 引擎和 Node.js 运行时。
  2. 调试困难:一旦打包成二进制,调试堆栈信息不如源码方便,建议保留源码备份。
  3. 动态加载:如果项目中有动态 require 或 import 外部文件,pkg 可能无法识别,需要额外配置 pkg 的 assets 字段。

这套流程基本覆盖了从开发到交付的标准路径,对于中小型工具类应用非常实用。

目录

  1. 使用 NCC 和 PKG 将 Node.js 项目打包为跨平台可执行文件
  2. 准备工作
  3. 安装构建工具
  4. 编译与打包流程
  5. 1. 使用 NCC 编译
  6. 2. 使用 PKG 打包
  7. 运行验证
  8. Linux / macOS
  9. Windows
  10. 注意事项
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • YOLO 无人机目标检测实战:7261 张数据集与 QT 可视化界面实现
  • Nginx 安装配置、核心参数及反向代理实战
  • 主流大模型横评:GPT、Claude、Gemini、Llama 及国产模型选型指南
  • 位运算实战:两数之和、单次数字与缺失数字
  • SpringBoot 整合 Neo4j 图数据库实战指南
  • Pi0 机器人 VLA 大模型在昇腾 A2 平台上的测评
  • 阿里云大模型工程师 ACA 认证学习笔记:核心考点与知识体系
  • APK 反编译基础与静态分析方法详解
  • Mac mini M4 部署 OpenClaw + Ollama 本地大模型接入飞书机器人
  • MCP 插件配置指南:以 browser-tools-mcp 为例
  • 在本地跑起大模型:Ollama + Open WebUI 搭建记录
  • 前端内容创作 Agent 提示词
  • Python 简易背景抠图方案实践与探索
  • 从 vw/vh 到 clamp(),前端响应式设计的痛点与进化
  • 智驿 AI 系统:基于 Spring Boot 与 Vue3 的前后端分离实践
  • 机器人脑部药物递送三大技术路径可转化性分析
  • PyTorch 文本引导图像生成技术与 Stable Diffusion 实践
  • MySQL 窗口函数与 JSON 数据类型实战教程
  • InspireFace 与其他开源人脸识别 SDK 性能对比与选型指南
  • 2026 年主流 AI 写作工具深度测评:DeepSeek 与垂直平台对比

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online