pkg的使用

最近想做一个自动处理的流程工具,由于是要在window下能执行的命令,之前是想用window 下的shell来完成,由于window shell 不是很方便处理多流程的事情, 想用nodejs脚本来进行,可是nodejs又依赖node包就显示的很麻烦,有没有不用安装其他包能直接运行的脚本呢, 答案是有的,可以将nodejs代码打包成可执行的文件,就可以了, 下面是打包工具的使用

将Node.js打包为可执行文件的工具有pkg、nexe、node-packer、enclose等

pkg的打包原理简单来说,就是将js代码以及相关的资源文件打包到可执行文件中,然后劫持fs里面的一些函数,使它能够读到可执行文件中的代码和资源文件。例如,原来的require(’./a.js’)会被劫持到一个虚拟目录require(’/snapshot/a.js’)。

全局下载

npm install pkg -g

pkg使用比较简单,执行下

pkg -h

pkg [options]

Options:

-h, --help           output usage information
-v, --version        output pkg version
-t, --targets        comma-separated list of targets (see examples)
-c, --config         package.json or any json file with top-level config
--options            bake v8 options into executable to run with them on
-o, --output         output file name or template for several files
--out-path           path to save output one or more executables
-d, --debug          show more information during packaging process [off]
-b, --build          don't download prebuilt base binaries, build them
--public             speed up and disclose the sources of top-level project
--public-packages    force specified packages to be considered public
--no-bytecode        skip bytecode generation and include source files as plain js
--no-native-build    skip native addons build
--no-dict            comma-separated list of packages names to ignore dictionaries. Use --no-dict * to disable all dictionaries
-C, --compress       [default=None] compression algorithm = Brotli or GZip

Examples:

– Makes executables for Linux, macOS and Windows
pkg .
– Makes executable for particular target machine
pkg -t node12-linux,node14-linux,node14-win index.js
– Bakes '--expose-gc' and '--max-heap-size=34' into executable
pkg --public-packages "packageA,packageB" index.js
– Consider all packages to be public
pkg --options expose-gc index.js
– reduce size of the data packed inside the executable with GZip
$ pkg --compress GZip index.js

-t,–目标逗号分隔的目标列表,指定打包的目标平台和Node版本,如-t node6-win-x64,node6-linux-x64,node6-macos-x64可以同时打包3个平台的可执行程序

-c,–config package.json 或任何具有顶级配置的json文件,指定一个JSON配置文件,用来指定需要额外打包脚本和资源文件,通常使用package.json配置。

–option 将V8选项烘焙到可执行文件中以在其上运行

-o,–指定输出可执行文件的名称,但如果用-t指定了多个目标,那么就要用–out-path指定输出的目录;

----out-path 输出一个或多个可执行文件的输出路径

-d,–debug 在打包过程中显示更多信息[off]

-build 不要下载预构建的基本二进制文件,构建它们。

–public 加速并披露顶级项目的来源

执行pkg 的时候会在~/.pkg-cache 找对应的pkg-fetch包,如果找不到会自动去下载
下载地址
由于是下载仓库在国外,下载比较缓慢
可以通过github的国内镜像地址去下载
将 https://github.com 换成 https://hub.fastgit.xyz/
例如:https://github.com/vercel/pkg-fetch/releases/download/v3.4/node-v16.16.0-win-arm64
换成:
https://hub.fastgit.xyz/vercel/pkg-fetch/releases/download/v3.4/node-v16.16.0-win-arm64
这样下载就比较快了

你可能感兴趣的:(pkg的使用)