'npm start'는 언제 사용하고 'ng serve'는 언제 사용합니까?


157

ng serve 개발 서버를 통해 Angular 프로젝트를 제공

 

npm start"scripts"객체의 패키지 "start"속성에 지정된 임의의 명령을 실행합니다. "scripts"오브젝트에 "start"특성이 지정되지 않으면 node server.js가 실행됩니다.

ng serve내장 서버를 npm start시작하는 반면 노드 서버를 시작하는 것처럼 보입니다 .

누군가 그것에 불을 붙일 수 있습니까?


1
당신 startscripts객체에서 그 명령이 무엇인지 살펴 보셨습니까 package.json? 왜 전혀 차이가 없다고 생각합니까?
jonrsharpe

답변:


205

npm start파일 start에서 scripts객체 의 명령에 대해 정의한 모든 것을 실행 package.json합니다.

따라서 다음과 같은 경우 :

"scripts": {
  "start": "ng serve"
}

그런 다음 npm start실행 ng serve됩니다.


또한 OP에 이미 포함 된 견적에 따라 : "scripts"개체에 "start"속성이 지정되어 있지 않으면 실행됩니다 node server.js(해당 파일이 없으면 실패 함).
jonrsharpe

1
예, 그러나 angular-cli는 초기화시 시작 명령을 생성하므로 수정하지 않은 경우 동일한 명령이어야합니다.
Puigcerber

7
참고 : 사용하는 npm start것이 좋습니다. 사용 ng serve하려면 각도 cli를 전체적으로 설치하거나 노드 모듈 저장소에서 참조해야합니다.
Kyle Pfromer

43

CLI를 사용하는 프로젝트의 경우 일반적으로 ng serve를 사용합니다. 다른 경우에는 npm start를 사용할 수 있습니다. 자세한 설명은 다음과 같습니다.

ng 봉사

프로젝트 될 것 입니다 , 특히 사용 '코너 CLI 인식'각 CLI를 사용하여 생성 된, 즉 프로젝트를 :

ng new app-name

CLI를 사용하여 프로젝트를 스캐 폴딩 한 경우에는 ng serve를 사용하고 싶을 것입니다.

npm 시작

Angular CLI를 인식 하지 못하는 프로젝트의 경우 사용할 수 있습니다 (또는 Angular CLI를 인식하는 프로젝트에 대해 'ng serve'를 실행하는 데 간단히 사용할 수 있음)

다른 답변 상태로, 이것은 식별자가 'start'인 package.json에서 npm 명령을 실행하는 npm 명령이며 'ng serve'만 실행할 필요는 없습니다. package.json에 다음과 같은 것을 가질 수 있습니다.

   "scripts": {
     "build:watch": "tsc -p src/ -w",
     "serve": "lite-server -c=bs-config.json",
     "start": "concurrently \"npm run build:watch\" \"npm run serve\""
     ...
   },
   "devDependencies": {
     "concurrently": "^3.2.0",
     "lite-server": "^2.2.2",

이 경우 'npm start'를 실행하면 다음 명령이 실행됩니다.

concurrently "npm run build:watch" "npm run serve"

이렇게하면 TypeScript 컴파일러 (코드 변경 사항 관찰)가 동시에 실행되고 노드 라이트 서버 (사용자 BrowserSync)가 실행됩니다


1
난 당신이 downvotes를 얻은 유일한 이유는 당신이 표시된 답변에서 들었던 것을 다소 반복하기 때문일 수 있습니다.
Kostrzak

1
한 문장을 사용하여 언제 하나를 사용해야하는지 알려주고 제공 한 내용을 따르는 것이 좋습니다. 작은 프로젝트에서 그들은 같은 일이 될 수 있습니다. npm start는 단순히 ng serve를 실행할 수 있습니다. 프로젝트가 커지거나 더 많은 단계가 필요한 경우 npm start는 npm 표준으로 응용 프로그램을 시작 / 실행합니다. 나는 거의 대답을 한 다음 당신이 제공 한 것을 읽은 후에는 필요가 없다는 것을 깨달았습니다. 당신의 대답은 매우 좋았습니다.
PatS

13

문서에서

npm-start :

패키지의 "scripts"객체의 "start"속성에 지정된 임의의 명령이 실행됩니다. "scripts"오브젝트에 "start"특성이 지정되지 않으면 node server.js가 실행됩니다.

즉, 패키지 내부의 시작 스크립트를 호출합니다.

"scripts": {
"start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite --baseDir ./app --port 8001\" ",
"lite": "lite-server",
 ...
}

ng 봉사 :

angular / cli에 의해 생성 된 angular2 앱을 시작하기 위해 angular / angular-cli에서 제공합니다. angular-cli를 설치하면 C:\Users\name\AppData\Roaming\npm(Windows의 경우) 아래에 ng.cmd가 생성 되고 실행됩니다."%~dp0\node.exe" "%~dp0\node_modules\angular-cli\bin\ng" %*

따라서 사용 npm start하면 ng serveangular-cli에만 있는 곳에서 자신의 실행을 할 수 있습니다

참조 : ng serve를 실행하면 어떻게됩니까?


또는 그것은 줄 수 있습니다npm ERR! missing script: start
레오

1

그 이상이 있습니다. 실행 된 실행 파일이 다릅니다.

npm run start

node_modules / .bin에있는 프로젝트 로컬 실행 파일을 실행합니다.

ng serve

전역적인 다른 실행 파일을 실행합니다.

즉, angular-cli 버전 5로 작성된 Angular 프로젝트를 복제하고 설치하고 글로벌 cli 버전이 7이면 ng 빌드에 문제가있을 수 있습니다.


0

ng명령 없이 다른 컴퓨터에서 이식 된 각도 앱을 실행 하려면 package.json다음과 같이 편집하십시오.

"scripts": {
    "ng": "ng",
    "start": "node node_modules/.bin/ng serve",
    "build": "node node_modules/.bin/ng build",
    "test": "node node_modules/.bin/ng test",
    "lint": "node node_modules/.bin/ng lint",
    "e2e": "node node_modules/.bin/ng e2e"
  }

마지막으로 일반적인 npm start명령을 실행 하여 빌드 서버를 시작하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.