web-dev-qa-db-fra.com

Pm2 peut-il 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 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" ./

141
svnm

PM2 prend désormais en charge npm start:

pm2 start npm -- start
299
Dhaval Chauhan

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 .

70
Jyotman Singh

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.

26
jcollum

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
25
peccu

Pour utiliser npm run

pm2 start npm --name "{app_name}" -- run {script_name}

17
carkod

Voir pour activer le clustering:

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

Qu'est-ce que tu penses?

7
jdnichollsc

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
5
KARTHIKEYAN.A

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

2
Vitaliy Markitanov

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.jsonDé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.

1
snozza
pm2 start ./bin/www

peut courir

si vous voulez déployer plusieurs serveurs, vous pouvez le faire. au lieu de pm2 start npm - start

0
劉謹賢

Maintenant, vous pouvez utiliser après:

pm2 start npm -- start

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

0
Minh Dao

N'oubliez pas l'espace avant de commencer

pm2 start npm --[space]start

la commande correcte est donc:

pm2 start npm -- start
0
Vidura Adikari