美文网首页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 命令行工具打包成可执行文件

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