/nx-pm2

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.

Primary LanguageTypeScript

Nx-PM2 Plugin

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.

Installation

Use the package manager npm to install nx-pm2-plugin.

npm  install  nx-pm2-plugin

Usage

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

Documentation

Executor options

(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

Picking up pm2 configuration from env:

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}"
	}
}

Mandatory options:

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

Test

To run tests, use the following command:

npm test

License

MIT

Contact

If you have any questions or need further clarification, feel free to reach out.

Changelog

See the CHANGELOG.md file for details.