@hz-9/pkg-build
@hz-9/pkg-build
A tool for run pkg to package Node.js service or tool.
Introduction
Why create @hz-9/pkg-build
instead of directly use pkg
?
@hz-9/pkg-build
still utilizes pkg for packaging operations without optimizations. @hz-9/pkg-build
provides the following functionalities:
- Supports
buildName
andbuildVersion
parameters. Default, it will read them from the package.json file. - The output artifacts will be rename
${name}-${version}-${platform}-${arch}
format.
Installation
npm install --global @hz-9/pkg-build
Usage
Get help:
pkg-build --help
Minimal execution:
pkg-build
With config file:
pkg-build --config ./.hz-9.conf.json
Please see config file description to learn how to write .hz-9.conf.json
.
Parameters
-r, --root
The execution path, default is process.cwd()
. This parameter will affects the reading of the package.json
file and the resolution of other relative paths.
-c, --config
The path to the configuration file. If omitted, the configuration file is not read.
The command-line parameters have higher priority than configuration file parameters.
--build-name
The name part of the build output filename. If omitted, it will read name
parameter from package.json
. If package.json cannot be found or parsed correctly, it will default to 'unknown'.
--build-version
The version part of the build output filename. If omitted, it will read version
parameter from package.json
. If package.json cannot be found or parsed correctly, it will default to '0.0.0'.
--targets
The targets
parameter when execution pkg
. This is detail.
If export multi platforms, use ,
to separate them.(eg: linux-64,win-x64
) If omitted, it is linux-x64
.
--input-path
The entry file path when execution pkg
. If ommited, it is ./src/index.js
.
--output-path
The output folder path when execution pkg
. If ommited, it is ./build
.
The --config, --input-path, and --output-path parameters can all accept relative or absolute paths. Relative paths will be resolved using the root parameter as the base path.
Config file
The configuration file support jsonc
format. All parameters are prefixed with pkg
.
eg: Read buildName
parameter, will read the value of pkg.buildName
from the configuration file.
This is a template for a configuration file:
{
"pkg": {
"inputPath": "dist/main.js",
"buildName": "service",
"version": "0.0.0",
"targets": [
"linux-x64"
]
}
}
pkg.buildName
Equivalent to --build-name
. Has lower priority than command-line arguments.
pkg.buildVersion
Equivalent to --build-version
. Has lower priority than command-line arguments.
pkg.targets
Equivalent to --targets
. Has lower priority than command-line arguments.
pkg.inputPath
Equivalent to --input-path
. If a relative path is provided,it will be resolved using the path where the config
folder is located as the base path.
pkg.outputPath
Equivalent to --output-path
. If a relative path is provided,it will be resolved using the path where the config
folder is located as the base path.
pkg.scripts
Since scripts
are fixed information in the project, we do not plan to support scripts
parameters in command-line.
pkg.assets
Since assets
are fixed information in the project, we do not plan to support assets
parameters in command-line.