Existe-t-il un moyen pour pm2 d’exécuter un script de démarrage npm ou devez-vous simplement exécuter pm2 start app.js
Donc en développement
npm start
Ensuite, en production avec pm2, vous exécutez quelque chose comme
pm2 start 'npm start'
Il y a une manière équivalente de faire cela pour toujours
forever start -c "npm start" ./
PM2 prend désormais en charge npm start:
pm2 start npm -- start
Ceux qui utilisent un script de configuration tel qu'un fichier .json
pour exécuter le processus pm2 peuvent utiliser npm start
ou tout autre script du même genre -
my-app-pm2.json
{
"apps": [
{
"name": "my-app",
"script": "npm",
"args" : "start"
}
]
}
Alors simplement -
pm2 start my-app-pm2.json
Edit - Pour gérer le cas d'utilisation de ce script de configuration dans un répertoire parent et que vous souhaitez lancer une application dans le sous-répertoire, utilisez ensuite la cwd
attribut.
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étail ici .
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 blocage.
J'ai écrit le script Shell ci-dessous (nommé start.sh
). Parce que mon package.json
a l'option prestart
. Donc, je veux exécuter npm start
.
#!/bin/bash
cd /path/to/project
npm start
Ensuite, démarrez start.sh
par pm2.
pm2 start start.sh --name appNameYouLike
Pour utiliser npm run
pm2 start npm --name "{app_name}" -- run {script_name}
Voir pour activer le clustering:
pm2 start npm --name "AppName" -i 0 -- run start
Qu'est-ce que tu penses?
Oui, nous pouvons maintenant, avec pm2, prendre en charge npm start, --name en nommant l’application de l’espèce.
pm2 start npm --name "app" -- start
Malheureusement, pas de chance avec l'exécution du script start:prod
.
"scripts": {
"start:prod": "node index.js"
},
La commande pm2 start npm -- run start:prod
se bloque
Malheureusement, il semblerait que pm2 ne prenne pas en charge 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
Débuter avec le déploiement , qui pourrait inclure des configurations pour les environnements de production et de développement. Cependant, cela utilise toujours npm start
pour bootstrap _ votre application.
pm2 start ./bin/www
peut courir
si vous voulez déployer plusieurs serveurs, vous pouvez le faire. au lieu de pm2 start npm - start
Maintenant, vous pouvez utiliser après:
pm2 start npm -- start
Suivez par https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319
N'oubliez pas l'espace avant de commencer
pm2 start npm --[space]start
la commande correcte est donc:
pm2 start npm -- start