美文网首页Node.js
[Node] 将 node 命令行工具打包成可执行文件

[Node] 将 node 命令行工具打包成可执行文件

作者: 何幻 | 来源:发表于2020-12-23 11:21 被阅读0次

背景

pkg 是一个打包工具,可以将 node 命令行工具打包成可执行文件。
以下记录了 pkg 的使用过程和注意事项。

使用方式

(1)node 版本

$ node --version
v10.21.0

(2)安装 pkg

$ tnpm i -g pkg
$ pkg --version
4.4.9

(3)打包

$ pkg . -t node10-linux-x64 --options max_old_space_size=4096 -o ./release/main

参数说明:
(1). 打包当前目录,会自动分析 node_modules 中的依赖,把依赖也打包
(2)-t node10-linux-x64 目标平台为 linux 64
(3)--options max_old_space_size=4096 可执行文件预分配的交换区空间
(4)-o ./release/main 打包结果文件路径

首次打包会下载工具到 ~/.pkg-cache 中,

~/.pkg-cache
└── v2.6
    ├── fetched-v10.21.0-linux-x64 # 如果需要打包到这个平台
    └── fetched-v10.21.0-macos-x64

下载时间会比较长,可以手动到 pkg-fetch v2.6 release 对应 node 版本进行下载。

注:
(1)打包的 Node.js 应用必须是一个命令行工具项目才行
(2)如果代码中用到了 Node.js addon,这些 addon 必须手动拷贝到打包产物的同级目录中才能使用。且必须考虑 addon 的平台差异,mac 上安装的 addon 无法在 linux 中使用。
(3)如果需要将额外的文件打包进去,需要配置 package.json 的 pkg.assets 字段,例如,

{
  ...,
  "pkg": {
    "assets": [
      "node_modules/typescript/**/*"
    ]
  }
}

会将 node_modules 中的 typescript 目录也打包进去。


参考

https://github.com/vercel/pkg

相关文章

  • [Node] 将 node 命令行工具打包成可执行文件

    背景 pkg[https://github.com/vercel/pkg] 是一个打包工具,可以将 node 命令...

  • vue-cli 脚手架 安装

    一、 node安装 1)如果不确定自己是否安装了node,可以在命令行工具内执行: node -v (检查一下 ...

  • vue 安装vue-cli 脚手架工具

    一、 node安装 如果不确定自己是否安装了node,可以在命令行工具内执行: node -v (检查一下 版本...

  • 2019-04-26 nvm、node、npm、nrm、yarn

    前言 nvm、node、npm的关系nvm: 一个命令行工具,主要用于对Node版本的管理node: 运行在服务端...

  • 环境搭建~Vue CLI

    1.安装Node.js 终端工具( windows cmd) 命令行: 指令:1)node -v(查看安装的N...

  • nvm避坑指南

    nvm node version manager(node版本管理工具) 通过将多个node 版本安装在指定路径,...

  • wepy构建小程序

    根据不同的系统安装node,npm是node自带的包管理工具 全局安装或更新WePY命令行工具 npm insta...

  • Vue.js脚手架工具环境搭建

    安装Vue.js和命令行工具 Vue基于Node.js,所以需要安装Node,所以第一步,我们先下载安装Node....

  • vue安装步骤

    1.安装node.js 从node.js官网 下载并安装node1.1我们通过打开命令行工具(win+R),输入n...

  • Vuepress使用指南(reco)

    环境搭建 安装node node官网 安装官网提示下载安装包安装即可 安装完成后打开命令行工具,输入node -v...

网友评论

    本文标题:[Node] 将 node 命令行工具打包成可执行文件

    本文链接:https://www.haomeiwen.com/subject/woeynktx.html