programing

pm2에서 'npm start' 스크립트를 실행할 수 있습니까?

yellowcard 2023. 6. 24. 08:58
반응형

pm2에서 'npm start' 스크립트를 실행할 수 있습니까?

pm2가 npm 시작 스크립트를 실행할 수 있는 방법이 있습니까? 아니면 당신은 실행해야 합니다.pm2 start app.js

그래서 개발 중입니다.

npm start

그런 다음 pm2로 프로덕션에서 당신은 다음과 같은 것을 실행할 것입니다.

pm2 start 'npm start'

에서 이와 동등한 방법이 있습니다.forever:

forever start -c "npm start" ./

PM2는 이제 npm 시작을 지원합니다.

pm2 start npm -- start

PM2 프로세스에 이름을 할당하려면 다음을 사용합니다.--name옵션:

pm2 start npm --name "app name" -- start

구성 스크립트를 사용하는 사용자는.jsonpm2 프로세스를 실행하는 파일이 사용할 수 있습니다.npm start아니면 이런 다른 대본들도...

my-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"
        }
    ]
}

자세한 내용은 여기에 있습니다.

사용하기npm run

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

애플리케이션에서 특정 npm 스크립트를 pm2(각 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 start npm --no-automation --name {app name} -- run {script name}.그건 효과가 있다.--no-automation플래그가 없으면 PM2가 앱을 다시 시작하지 않기 때문에 플래그가 있습니다.

내 앱처럼 여기에 앱 이름을 제공해야 합니다.

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

아래에 셸 스크립트를 작성했습니다(이름 지정).start.sh. 왜냐하면 나의package.json가지다prestart선택.그래서 나는 달리고 싶습니다.npm start.

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

그러면 시작.start.sh오후 2시까지

pm2 start start.sh --name appNameYouLike

네, 이제 pm2는 npm start, --name to 종 앱 이름을 지원할 수 있습니다.

pm2 start npm --name "app" -- start

클러스터링을 사용하려면 을 참조하십시오.

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

당신은 어떻게 생각하나요?

프로젝트로 디렉토리를 변경할 수 있습니다.

cd /my-project

그 다음에 달려라

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

자세한 내용은 여기를

글로벌하게 사용하는 대신 노드 모듈을 통해 PM2를 사용하는 경우 설정해야 합니다.interpreter: 'none'위의 해결책이 작동하기 위해.여기 관련 문서.

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"
  }

이것은 다른 사람들이 하지 않았을 때 저에게 효과가 있었습니다.

일반 사용자용

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 config (json) 파일을 사용하면 매우 효율적으로 작업할 수 있습니다.

꾸러미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 스크립트(애플리케이션 패키지에 언급된 명령줄)를 실행합니다.json 파일):

운영 환경의 경우:

pm2 start ecosystem.config.js --env production --only NodeServer

개발 환경의 경우:

pm2 start ecosystem.config.js --only NodeServer

...그리고 붐!여러분.

센트에서 잘 작동하고 있습니다.OS 7

PM2 버전 4.2.1

두 가지 시나리오를 살펴보겠습니다.

npm start //server.js

pm2 start "npm -- start" --name myMainFile

npm run main //main.js

pm2 start "npm -- run main" --name myMainFile

유감스럽게도, pm2는 당신이 요청한 https://github.com/Unitech/PM2/issues/1317 의 정확한 기능을 지원하지 않는 것 같습니다.

은 제된대다같습다니음과은안을 입니다.ecosystem.json파일 운영 및 개발 환경에 대한 설정을 포함할 수 있는 배포 시작그러나 이는 여전히 사용 중입니다.npm start응용프로그램을 부트스트랩합니다.

pm2 start ./bin/www

깡통 달리기

여러 서버를 배포하려는 경우 그렇게 할 수 있습니다.pm2 start npm -- start

시작하기 전에 공간을 잊지 마십시오.

pm2 start npm --[space]start

따라서 올바른 명령은 다음과 같습니다.

pm2 start npm -- start

를 사용하여 npm start에 법과그을주것는것방▁it것▁and▁method를 부여하는 것.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 start npm -- start

다음은 https://github.com/Unitech/pm2/issues/1317#issuecomment-220955319 입니다.

먼저, 당신은 run.js 파일을 만들고 그 위에 아래 코드를 붙여넣어야 합니다.

const { spawn } = require('child_process');
//here npm.cmd for windows.for others only use npm
const workerProcess = spawn('npm.cmd', ['start']); 

  workerProcess.stdout.on('data', function (data) {  
      console.log('stdout: ' + data);  
   });  
 workerProcess.stderr.on('data', function (data) {  
      console.log('stderr: ' + data);  
   });  
 workerProcess.on('close', function (code) {  
      console.log('child process exited with code ' + code);  
   });  

이 파일을 pm2로 실행합니다.

pm2 start run.js 
  • 리스트 항목

언급URL : https://stackoverflow.com/questions/31579509/can-pm2-run-an-npm-start-script

반응형