Peut pm2 exécuter un script ‘npm start’

Existe-t-il un moyen pour pm2 d’exécuter un script de démarrage npm ou devez-vous simplement lancer pm2 start app.js

Donc en développement

npm start

Ensuite, en production avec pm2, vous feriez quelque chose comme

pm2 start 'npm start'

Il y a un moyen équivalent de le faire pour toujours

forever start -c "npm start" ./

PM2 prend désormais en charge le démarrage npm:

 pm2 start npm -- start 

Ceux qui utilisent un script de configuration comme un fichier .json pour exécuter le processus pm2 peuvent utiliser npm start ou tout autre script comme celui-ci –

my-app-pm2.json

 { "apps": [ { "name": "my-app", "script": "npm", "args" : "start" } ] } 

Alors simplement –

 pm2 start my-app-pm2.json 

Modifier – Pour gérer le cas d’utilisation lorsque vous avez ce script de configuration dans un répertoire parent et que vous souhaitez lancer une application dans le sous-répertoire, utilisez l’atsortingbut cwd .

En supposant que notre application se trouve dans le sous-répertoire nested-app relatif à ce fichier de configuration, alors –

 { "apps": [ { "name": "my-nested-app", "cwd": "./nested-app", "script": "npm", "args": "start" } ] } 

Plus de détails ici .

J’ai écrit un script shell ci-dessous (nommé start.sh ). Parce que mon package.json a prestart option de prestart . Je veux donc lancer npm start .

 #!/bin/bash cd /path/to/project npm start 

Ensuite, démarrez start.sh par pm2.

 pm2 start start.sh --name appNameYouLike 

Oui. Utilisez pm2 start npm --no-automation --name {app name} -- run {script name} . Ça marche. Le drapeau --no-automation est là car, sans lui, PM2 ne redémarrera pas votre application en cas de panne.

Voir pour activer la mise en cluster:

 pm2 start npm --name "AppName" -i 0 -- run start 

Qu’est-ce que tu penses?

Malheureusement, il semble que pm2 ne supporte pas la fonctionnalité exacte que vous avez demandée https://github.com/Unitech/PM2/issues/1317 .

L’alternative proposée est d’utiliser un fichier ecosystem.json . Commencer par un déploiement pouvant inclure des configurations pour des environnements de production et de développement. Cependant, cela utilise encore npm start pour démarrer votre application.

Maintenant, vous pouvez utiliser après:

 pm2 start npm -- start 

Suivez par https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319