The nx-pm2-plugin
serves as a high-functionality add-on for an Nx monorepo, designed to facilitate the execution of any Node.js applications utilizing the pm2 process manager. This plugin offers seamless integration, optimizing the management and maintenance of your application's runtime processes.
Use the package manager npm to install nx-pm2-plugin
.
npm install nx-pm2-plugin
create a task in nx (example):
"pm2": {
"executor": "nx-pm2-plugin:pm2-executor",
"options": {
"command": "nx-pm2-example:serve:production",
"name": "example"
}
}
execute task
npx nx run nx-pm2-example:pm2
(Shema):
Property | Type | Description |
---|---|---|
name | string | The name of the application |
instances | number | Number of instances to start, if set, automatically in cluster mode |
max_memory_restart | string | Max memory amount after which app needs to restart |
log_date_format | string | Date format for logs |
merge_logs | boolean | Whether to merge logs |
autorestart | boolean | Whether to auto-restart the application when it crashes or ends |
log_file | string | Path to the file where both out and error logs will be written |
out_file | string | Path to the file where application stdout will be written |
error_file | string | Path to the file where application stderr will be written |
pid_file | string | Path to the file where application pid will be written |
command | string | Nx project command to be executed by PM2 |
In the following example the INSTANCE_NAME & NO_OF_INSTANCES will be picked up from process.env
"pm2": {
"executor": "nx-pm2-plugin:pm2-executor",
"dependsOn": ["build"],
"options": {
"command": "nx-pm2-example:serve:production",
"instances": "${NO_OF_INSTANCES}",
"name": "${INSTANCE_NAME}"
}
}
The following executor options are mandatory:
Property | Type | Description |
---|---|---|
command | string | Nx project command to be executed by PM2 |
name | string | The name of the PM2 instance |
To run tests, use the following command:
npm test
If you have any questions or need further clarification, feel free to reach out.
-
Github: Jonathan Dsouza
-
Email: mail2jona@yahoo.com
See the CHANGELOG.md file for details.