2017-12-19 28 views
0

과 같은 다른 npm 스크립트가 http-server으로 HTTP 요청을 만들 수 있도록 npm 스크립트에서 백그라운드로 http-server을 시작하려면 어떻게해야합니까?npm 스크립트에서 백그라운드로 http- 서버 실행

npm install http-server --save-dev 

package.json 파일이 포함되어 있습니다 :

"scripts": { 
    "pretest": "gulp build-httpdocs", 
    "test": "http-server -p 7777 httpdocs/ && mocha spec.js" 
}, 

npm test 실행이 성공적으로 http-server 시작하지만, 물론 명령이 중단 보여주는 후 :

Starting up http-server, serving httpdocs/ 
Available on: 
    http://127.0.0.1:7777 
    http://192.168.1.64:7777 
Hit CTRL-C to stop the server 

http-server 패키지와 함께 설치

Mocha 테스트를 차단하지 않도록 웹 서버를 시작할 수있는 쉬운 방법이 있습니까?

보너스 : 모카 테스트를 실행 한 후 어떻게 http-server을 종료합니까?

+0

check https://stackoverflow.com/questions/26456618/deploy-node-app-with-http-server-and-forever –

+0

@IleshPatel 해당 질문에 대답이없고 npm 스크립트에는 적용되지 않습니다. . –

+0

당신은 linux/mac이나 windows에 있습니까? –

답변

1

마지막에 &을 추가하여 백그라운드에서 프로세스를 실행할 수 있습니다. 그런 다음 postscript 후크를 사용하십시오. npm은 백그라운드 프로세스를 중단시키기 위해 우리에게 제공합니다.

"scripts": { 
    "web-server": "http-server -p 7777 httpdocs &", 
    "pretest": "gulp build-httpdocs && npm run web-server", 
    "test": "mocha spec.js", 
    "posttest": "pkill -f http-server" 
} 

하지만 제가 여러 http-server가 실행 한 경우?

"posttest": "kill $(lsof -t -i:7777)" 

지금 Windows 용, 구문은 다른과 내가 아는 한 NPM 여러 OS 스크립트를 지원하지 않습니다

당신은 posttest 스크립트의 포트를 지정하여 프로세스를 종료 할 수 있습니다. 여러 가지를 지원하기 위해 최선의 방법은 각기 다른 OS를 다룰 수있는 꿀꺽 꿀꺽한 과제 일 것입니다.

+0

이 대답은 저를 잡았 습니다만 적어도 macos *에 대해서는 두 가지 조작을해야했습니다 : ** 1) **'http-server' 명령은 별도의 npm 스크립트 여야합니다. 왜냐하면'&' 끝 부분에 있어야하며 라인의 모든 것을 백그라운드에서 실행하게하고 ** **) 웹 서버를 종료하려면'-f' 플래그가 필요합니다 (''pkill -f http-server "') –

+1

나는 그것이 일하고있어 기뻐요! 나는 그것을 시험 할 리눅스/맥이 없기 때문에 나는 그것을 메모리에서 썼다! 광산 편집 솔루션을 찾거나 새로운 솔루션을 작성하여 닫으십시오. –

+0

편집이 완료되었습니다. 좋은 정보 주셔서 감사합니다! –