是否有一种方法让pm2运行npm启动脚本,或者你只需要运行pm2 start app.js

所以在发展中

npm start

然后在使用pm2的生产中,你会运行这样的程序

pm2 start 'npm start'

有一种等效的方法可以永远做到这一点:

forever start -c "npm start" ./

当前回答

我需要在我的应用程序pm2中运行一个特定的npm脚本(对于每个env) 在我的例子中,是当我创建一个登台/测试服务时

对我有用的命令(参数必须这样转发):

pm2 start npm --name "my-app-name" -- run "npm:script"

例子:

pm2 start npm --name "myApp" -- run "start:test"

pm2 start npm --name "myApp" -- run "start:staging"

pm2 start npm --name "myApp" -- run "start:production"

希望有帮助

其他回答

不幸的是,pm2似乎不支持您要求的确切功能https://github.com/Unitech/PM2/issues/1317。

建议的替代方案是使用生态系统。开始部署,其中可能包括生产和开发环境的设置。然而,这仍然使用npm start来引导你的应用程序。

你需要在这里提供应用程序名称,比如myapp

pm2 start npm --name {appName} -- run {script name}

你可以通过

pm2 list

你也可以加上时间

pm2 restart "id" --log-date-format 'DD-MM HH:mm:ss.SSS'

or

pm2 restart "id" --time

您可以通过

pm2 log "id"

or

pm2 log "appName"

获取所有应用程序的日志

pm2 logs

您可以将目录更改为项目

cd /my-project

然后运行

pm2 start "npm run start" \\ run npm script from your package.json

点击这里阅读更多

现在,你可以用after:

pm2 start npm -- start

关注https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319

我在下面写了shell脚本(名为start.sh)。 因为我的包裹。Json有预启动选项。 我想运行npm start。

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

然后,通过pm2启动start.sh。

pm2 start start.sh --name appNameYouLike