使用pkg对nodejs项目打包

  pkg的介绍可以阅读官方说明。下面针对使用做一个简单的说明。

  1.  安装, 假设需要将项目打包成 win-x86 下运行的软件包,需要确定使用的 pkg 和 pkg-fecth 的版本,目前最后一个支持 x86 的 pkg 为 4.5.1pkg-fetch 则为 v2.6

npm install -g pkg@4.5.1

  2. 假设工程项目结构如下

myprj
    |_bin
    |  |_mb1(自己定义的模块)
    |
    |_dist
    |_node_modules
    |_public
    |  |_icons
    |  |_image
    |  |_javascripts
    |  |_stylesheets
    |_routers
    |_views
    |_app.js
    |_appConfig.json
    |_package-lock.json
    |_package.json

  那么 package 中 pkg 相关的配置如下。

{
  "name": "myprj",
   ...
  "main": "app.js", //
  "scripts": {
    ...
    "pkg": "pkg . -t node12.16.1-win-x86 --out-path dist/" //注意pkg和-t之间的 .
  },
  ...   
  "pkg":{ 
    "assets":["public/**/*","views/**/*"] //列出需要打包的项目文件
  },
  "bin":"app.js" //指定入口, 和pkg处的 。相对应
}

  该处的 点 表示,使用package.json中的"bin"属性指定的文件作为入口。Path to package.json   Pkg will follow bin property of the specified package.json and use it as entry file.

  3.  此时在项目根目录下运行如下命令即可完成打包。

npm run pkg

  可能出现的问题:

  1.  下载对应版本的fetched失败,那么需要手动下载所需版本,并将名称命名为 fetched-v12.16.1-win-x86 注意匹配。将给文件放置到环境变量PKG_CACHE_PATH所指定的文件夹,默认是用户的主文件夹 ~/.pkg-cache, 即 C:\Users\当前用户名\.pkg-cache\v2.6

  2. 如果需要打包后的软件需要在运行时读取外部配置文件,则可如下处理

var cfg = require(path.resolve(process.cwd(),'./appConfig.json'));

 

posted @ 2023-03-08 12:36  神棍二叔  阅读(1728)  评论(0编辑  收藏  举报