有没有办法让pm2运行npm启动脚本,或者只需要运行pm2 start app.js
所以在开发中
npm start
然后在pm2的制作中你会运行类似
的东西 pm2 start 'npm start'
永远有一种等效的方法
forever start -c "npm start" ./
答案 0 :(得分:250)
PM2现在支持npm start:
pm2 start npm -- start
答案 1 :(得分:61)
那些使用像.json
文件这样的配置脚本来运行pm2进程的人可以使用npm start
或任何其他类似的脚本 -
我-APP-pm2.json 强>
{
"apps": [
{
"name": "my-app",
"script": "npm",
"args" : "start"
}
]
}
然后简单地 -
pm2 start my-app-pm2.json
编辑 - 要在父目录中具有此配置脚本并想要在子目录中启动应用程序时处理用例,请使用cwd
属性。
假设我们的应用程序位于相对于此配置文件的子目录nested-app
中,那么 -
{
"apps": [
{
"name": "my-nested-app",
"cwd": "./nested-app",
"script": "npm",
"args": "start"
}
]
}
更多细节here。
答案 2 :(得分:23)
我在下面编写了shell脚本(名为start.sh
)。
因为我的package.json
有prestart
选项。
所以我想运行npm start
。
#!/bin/bash
cd /path/to/project
npm start
然后,从pm2开始start.sh
。
pm2 start start.sh --name appNameYouLike
答案 3 :(得分:22)
是。使用pm2 start npm --no-automation --name {app name} -- run {script name}
。有用。 --no-automation
标志位于because without it PM2 will not restart your app when it crashes.
答案 4 :(得分:19)
我需要在pm2中的应用程序上运行特定的npm脚本(对于每个环境) 就我而言,这是我创建暂存/测试服务的时间
对我有用的命令(必须以这种方式转发args):
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"
希望有帮助
答案 5 :(得分:9)
要使用npm run
pm2 start npm --name "{app_name}" -- run {script_name}
答案 6 :(得分:7)
请参阅启用群集:
pm2 start npm --name "AppName" -i 0 -- run start
您怎么看?
答案 7 :(得分:7)
您需要在此处提供myapp之类的应用名称
pm2 start npm --name {appName} -- run {script name}
您可以通过以下方式进行检查
pm2 list
您还可以添加时间
pm2 restart "id" --log-date-format 'DD-MM HH:mm:ss.SSS'
或pm2 restart "id" --time
您可以通过以下方式查看日志
pm2 log "id"
或pm2 log "appName"
获取所有应用的日志
pm2 logs
答案 8 :(得分:3)
是的,现在我们可以了,pm2支持npm start,--name到种类应用程序名称。
pm2 start npm --name "app" -- start
答案 9 :(得分:1)
不幸的是,似乎pm2不支持您请求的确切功能https://github.com/Unitech/PM2/issues/1317。
建议的替代方法是使用ecosystem.json
文件Getting started with deployment,其中可能包含生产环境和开发环境的设置。但是,这仍然使用npm start
来引导您的应用。
答案 10 :(得分:1)
不幸的是,运行脚本start:prod
并不幸运。
"scripts": {
"start:prod": "node index.js"
},
命令pm2 start npm -- run start:prod
崩溃
答案 11 :(得分:1)
在开始之前不要忘记空格
pm2 start npm --[space]start
所以正确的命令是:
pm2 start npm -- start
答案 12 :(得分:1)
如果通过节点模块而不是全局使用PM2,则需要设置interpreter: 'none'
才能使上述解决方案起作用。相关文档here。
在ecosystem.config.js
中:
apps: [
{
name: 'myApp',
script: 'yarn',
args: 'start',
interpreter: 'none',
},
],
答案 13 :(得分:1)
要使用npm start
方法运行PM2并为其赋予name
,请运行此程序,
pm2 start npm --name "your_app_name" -- start
要通过传递日志的日期格式来运行它,
pm2 start npm --name "your_name" --log-date-format 'DD-MM HH:mm:ss.SSS' -- start
答案 14 :(得分:1)
PM2版本4.2.1
我们采取两种情况:
1。 npm start //server.js
pm2 start "npm -- start" --name myMainFile
2。 npm运行main //main.js
pm2 start "npm -- run main" --name myMainFile
答案 15 :(得分:0)
普通用户
PM2 现在支持 npm start:
pm2 start npm -- start
要为 PM2 进程指定名称,请使用“--name”选项:
pm2 start npm --name "your desired app name" -- start
对于 root 用户
sudo pm2 start npm -- start
要为 PM2 进程指定名称,请使用“--name”选项:
sudo pm2 start npm --name "your desired app name" -- start
答案 16 :(得分:0)
是的,绝对可以通过优雅地使用 pm2 配置 (json) 文件非常高效地完成。
"scripts": {
"start": "concurrently npm:server npm:dev",
"dev": "react-scripts start",
"build": "node ./scripts/build.js",
"eject": "react-scripts eject",
"lint": "eslint src server",
"shivkumarscript": "ts-node -T -P server/tsconfig.json server/index.ts"
}
假设我们要使用 pm2 实用程序运行名为“shivkumarscript”的脚本。因此,我们的 pm2 配置文件应该如下所示,包含值为 'npm' 的 'script' 键和值为 'run' 的 'args' 键。在我们的例子中,脚本名称是“shivkumarscript”。
module.exports = {
apps: [
{
name: "NodeServer",
script: "npm",
automation: false,
args: "run shivkumarscript",
env: {
NODE_ENV: "development"
},
env_production: {
NODE_ENV: "production"
}
}
]
}
假设你已经在你的机器上安装了 Node.js、NPM 和 PM2。那么下面应该是通过 pm2 启动应用程序的命令,它将依次运行 npm 脚本(在应用程序的 package.json 文件中提到的命令行):
对于生产环境:
pm2 start ecosystem.config.js --env production --only NodeServer
对于开发环境:
pm2 start ecosystem.config.js --only NodeServer
...还有嘘!伙计们
答案 17 :(得分:0)
pm2 start npm --name "custom_pm2_name" -- run prod
"scripts": {
"prod": "nodemon --exec babel-node ./src/index.js"
}
这在其他人没有的时候对我有用
答案 18 :(得分:0)
pm2 start ./bin/www
可以运行
如果要部署多个服务器 你可以做到的。代替pm2 start npm -开始
答案 19 :(得分:0)
现在,你可以使用:
pm2 start npm -- start
关注https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319