pm2 运行 一个 'npm start' 脚本可以吗
Can pm2 run an 'npm start' script
有没有办法让 pm2 运行 一个 npm 启动脚本,或者你只需要 运行 pm2 start app.js
开发中
npm start
然后在使用 pm2 的生产中你会 运行 类似
pm2 start 'npm start'
在forever
中有一个等效的方法可以做到这一点:
forever start -c "npm start" ./
很遗憾,pm2 似乎不支持您请求的确切功能https://github.com/Unitech/PM2/issues/1317。
建议的替代方案是使用 ecosystem.json
文件 Getting started with deployment,其中可以包括生产和开发环境的设置。但是,这仍在使用 npm start
到 bootstrap 您的应用程序。
我在下面编写了 shell 脚本(名为 start.sh
)。
因为我的 package.json
有 prestart
选项。
所以我想 运行 npm start
.
#!/bin/bash
cd /path/to/project
npm start
然后,在下午 2 点开始 start.sh
。
pm2 start start.sh --name appNameYouLike
是的。使用 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.
PM2 现在支持 npm 启动:
pm2 start npm -- start
要为 PM2 进程指定名称,请使用 --name
选项:
pm2 start npm --name "app name" -- start
查看启用集群:
pm2 start npm --name "AppName" -i 0 -- run start
你怎么看?
使用 .json
文件之类的配置脚本到 运行 pm2 进程的用户可以使用 npm start
或类似这样的任何其他脚本 -
我的应用-pm2.json
{
"apps": [
{
"name": "my-app",
"script": "npm",
"args" : "start"
}
]
}
那么简单 -
pm2 start my-app-pm2.json
Edit - 当您在父目录中有此配置脚本并希望在子目录中启动应用程序时处理用例,然后使用 cwd
属性。
假设我们的应用程序位于此配置文件的子目录 nested-app
中 -
{
"apps": [
{
"name": "my-nested-app",
"cwd": "./nested-app",
"script": "npm",
"args": "start"
}
]
}
更多详细信息here。
现在,您可以在之后使用:
pm2 start npm -- start
关注https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319
是的,我们可以,现在 pm2 支持 npm start,--name 为 species app name。
pm2 start npm --name "app" -- start
使用npm run
pm2 start npm --name "{app_name}" -- run {script_name}
pm2 start ./bin/www
可以运行
如果你想部署多台服务器 你可以做到。而不是 pm2 启动 npm -- start
不要忘记开始前的space
pm2 start npm --[space]start
所以正确的命令是:
pm2 start npm -- start
如果您通过节点模块而不是全局使用 PM2,则需要设置 interpreter: 'none'
才能使上述解决方案生效。相关文档 here.
在ecosystem.config.js
中:
apps: [
{
name: 'myApp',
script: 'yarn',
args: 'start',
interpreter: 'none',
},
],
pm2 start npm --name "custom_pm2_name" -- run prod
"scripts": {
"prod": "nodemon --exec babel-node ./src/index.js"
}
当其他人没有时,这对我有用
在 CentOS 7 上运行良好
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
您需要在此处提供应用名称,例如 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
我需要 运行 我在 pm2 中的应用程序上的特定 npm 脚本(针对每个环境) 就我而言,是在我创建 staging/test 服务时
对我有用的命令(参数必须以这种方式转发):
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"
希望对您有所帮助
用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
对于普通用户
PM2 现在支持 npm 启动:
pm2 start npm -- start
要为 PM2 进程指定名称,请使用“--name”选项:
pm2 start npm --name "your desired app name" -- start
对于根用户
sudo pm2 start npm -- start
要为 PM2 进程指定名称,请使用“--name”选项:
sudo pm2 start npm --name "your desired app name" -- start
是的,您绝对可以通过优雅地使用 pm2 配置 (json) 文件非常高效地完成它。
package.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'。
ecosystem.config.json 文件
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
...还有 Boooom!伙计们
您可以将目录更改为您的项目
cd /my-project
然后 运行
pm2 start "npm run start" \ run npm script from your package.json
阅读更多here