npm install과 npm run build의 차이점은 무엇입니까?


113

npm install과 의 차이점은 무엇입니까 npm run build?

나는 내 프로젝트에서 때때로 npm npm install이 수행 될 때 실패하기 시작 하지만 실행 npm run build하면 잘 작동 한다는 것을 알았습니다 .

어떻게 즉이 두 가지 목표의 내부 작업을 수행 install하고 run build차이?


1
현재 받아 들여지는 대답은 논쟁의 여지가 있습니다. MKP와 CTS_AE의 답변이이 시점에서 더 관련성이 있다고 생각합니다. 존경하는 마음으로, 이것은 중재자 및 / 또는이 질문을 한 사람의 통지에 따라야합니다.
Suhas Chikkanna

답변:


69

npm installnode_modules/작업중인 노드 프로젝트에 대한 종속성을 디렉터리에 설치합니다 . install다른 node.js 프로젝트 (모듈)를 호출 하여 프로젝트에 대한 종속성으로 설치할 수 있습니다.

npm run build은의 별칭이며 npm build"build"가 package.json 파일에서 수행하는 작업을 지정하지 않는 한 아무 작업도 수행하지 않습니다. 다른 프로젝트에서 사용하기 전에 프로젝트에 필요한 구축 / 준비 작업을 수행 할 수 있습니다.

buildbuild대한 문서에 따르면 linkinstall명령에 의해 호출됩니다 .

이것은 npm 링크 및 npm 설치에 의해 호출되는 배관 명령입니다.


37
@MKP 말한다 이후을 downvoted npm run build하고 npm build있다 되지 같은. 그들이 실제로 똑같다는 것을 증명하거나 당신의 대답을 정정 할 수 있다면 나는 다시 찬성 할 것입니다.
Hendy Irawan

아래 링크의 정답을 참조한 후 나도 그 npm build와 같지 않다고 생각합니다 npm run build. IMHO, @churro의 위 답변을 수정해야 할 수도 있습니다. 내가 틀렸다면 나를 바로 잡으십시오. stackoverflow.com/questions/29939697/...
Suhas 치카 나에게

1
불행히도 @HendyIrawan이 옳고 같은 명령이 아닙니다. 이것은 일부 사람들을 혼란스럽게 할 수있는 매우 투표 된 답변입니다. 업데이트해야한다고 생각합니다.
rdarioduarte 19

79

2019 년 NPM

npm build더 이상 존재하지 않다. npm run build지금 전화해야합니다 . 아래에 자세한 정보가 있습니다.

TLDR;

npm install: 종속성을 설치 한 다음 필드 install에서 를 호출합니다 package.json scripts.

npm run build: 필드에서 빌드 필드를 실행합니다 package.json scripts.


NPM 스크립트 필드

https://docs.npmjs.com/misc/scripts

npm package.json스크립트 필드에 입력 할 수있는 항목이 많이 있습니다 . 스크립트의 수명주기 위에있는 위의 문서 링크를 확인하세요. 대부분은 설치, 게시, 제거, 테스트, 시작, 중지, 수축 포장, 버전 전후에 스크립트를 실행할 수있는 사전 및 사후 후크를 가지고 있습니다.


복잡한 일

  • npm install 다음과 같지 않다 npm run install
  • npm installpackage.json종속성을 설치 한 다음package.json scripts.install
    • (필수적으로 npm run install종속성이 설치된 후 호출합니다 .
  • npm run install단지를 실행 package.json scripts.install, 그것은 종속성을 설치하지 않습니다 .
  • npm build이전에는 유효한 명령 npm run build이었지만 ( 과 동일하게 사용됨 ) 더 이상 그렇지 않습니다. 이제 내부 명령입니다. 실행하면 얻을 npm WARN build npm build called with no arguments. Did you mean to npm run-script build?수 있습니다 : https://docs.npmjs.com/cli/build 문서에서 자세한 내용을 읽을 수 있습니다.

5
+1하지만 npm build더 이상 존재하지 않는다고 말하는 것이 혼란 스럽습니다 . 그것은 당신이 맨 아래에 언급 한 경고와 반응하기 때문에 npm에 대해 알려져 / 특별하다는 의미에서 여전히 존재합니다. 본질적으로 지금은 아무것도하지 않습니다. 또 다른 질문이 대답 에 짧은 요약 준 npm build대를 npm run build.
bluenote10

1
즉, 실을 확인하는 시간?
루스에 무스

44

주요 차이점은 ::

npm install 은 미리 정의 된 작업을 수행하는 npm cli-command입니다. 즉, Churro가 작성한대로 package.json 내부에 지정된 종속성을 설치합니다.

npm run command-name 또는 npm run-script command-name ( 예 : npm run build )은 또한 "command-name"대신 지정된 이름으로 사용자 지정 스크립트를 실행하도록 미리 정의 된 cli-command입니다. 따라서이 경우 npm run build 는 이름이 "build"인 사용자 지정 스크립트 명령이며 그 안에 지정된 모든 작업을 수행합니다 ( 예 : 아래 예제 package.json에 제공된 echo 'hello world' ).

주목할 점 ::

1) 한 가지 더, npm build그리고 npm run build다른 두 가지가있다 npm build등의 추로에 의해 작성 할 것이다, 그러나 npm run build사용자 정의 작업 작성된 내부를 할 것입니다package.json

2) npm build과는 npm run build동일하지 않습니다. 내가 의미하는 바는 사용자 지정 빌드 ( npm run build) 스크립트 내부에 어떤 것을 지정할 수 없으며 npm build동일한 작업을 기대할 수 없다는 것 입니다. 확인하려면 다음을 시도하십시오 package.json.

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build":"echo 'hello build'"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {},
  "dependencies": {}
}

실행 npm run build하고 npm build하나 하나 당신은 차이를 볼 수 있습니다. 명령에 대한 자세한 내용은 npm 문서를 따르십시오 .

건배!!


11
"이것을 실행 해보십시오"보다는 npm run build과 (와 )의 차이점을 자세히 설명해 주시면 감사하겠습니다 npm build. 좋아, 그들은 같지 않다. 어떤면에서? 그래서 @Churro의 대답이 틀렸습니까?
Hendy Irawan

7
네, npm build미스터리로 남아있는 것은 무엇입니까 ? 그것을 아는 것이 좋을 것입니다. 내가 말할 수있는 한, " npm build추로쓴대로 할 것" 은 사실이 아닙니다. Churro는 명령 에 package.json대해 지정된 작업을 수행 할 것이라고 말했습니다 (내가 생각 build하는 scripts섹션 에서 정의한대로 ). 그러나의 것을 npm run build수행하고,이 npm build에 지정된 빌드 명령을 실행하지 않는 package.json scripts섹션을 참조하십시오. npm build에서 무엇을 해야하는지 정의 할 수있는 다른 방법 package.json이없는 한 , 여기에 설명되어 있지 않습니다. Churro도 (슬프게도 NPM 문서도 마찬가지라고 생각합니다).
trollkotze

2
그래서 나는 그것을 시도하고 인수없이 npm WARN 빌드를 호출npm build 했다고 말했습니다 . 그랬어 ? . 나는 그것이 아무것도하지 않았다고 생각한다. 여기에서 모든 답을 읽고 이것을 직접 시도하는 데 시간을 보낸 후에도 여전히 목적이 무엇인지 알 수 없습니다 . (.npm buildnpm run-script buildnpm build
bluenote10

4
  • npm install package.json 구성에 종속성을 설치합니다.
  • npm run build "build"스크립트를 실행하고 애플리케이션을 실행하는 스크립트를 생성했습니다. server.js라고 가정 해 보겠습니다.
  • npm start "노드 server.js"가 될 "시작"스크립트를 실행합니다.

문제가 무엇인지 정확히 말하기는 어렵지만 기본적으로 스크립트 구성을 보면 "빌드"는 일종의 빌드 도구를 사용하여 응용 프로그램을 만드는 반면 "시작"은 빌드가 완료되었다고 가정하고 파일이 없습니다.

아마도 bower 또는 grunt를 사용하고 계실 것입니다. 일반적인 grunt 응용 프로그램은 마지막 빌드를 삭제하는 "clean"스크립트와 함께 해당 스크립트를 정의한 것을 기억하는 것 같습니다.

빌드 도구는 시작 스크립트가 호출하는 bin /, dist / 또는 build / 폴더에 파일을 만드는 경향이 있습니다 (예 : "node build / server.js"). 당신이 때 npm start실패하면 호출하기 때문에, 그것은 아마도 npm clean또는 응용 프로그램 파일이 실패하기 시작 NPM 원인이 존재하지 않도록 최신 빌드를 삭제 유사합니다.

npm 빌드의 소스 코드-이 질문에 대한 논의를 다루기 위해-원하는 경우 살펴볼 수 있도록 github에 있습니다. npm build직접 실행 하고 "빌드"스크립트를 정의한 경우 .NET과 npm run-script build동일하지 않으므로 빌드 스크립트를 호출하라는 오류와 함께 종료 됩니다 npm run script.

나는 무엇을하는지 잘 모르겠지만 npm build그것은 postinstall 및 의존성에서 스크립트 패키징과 관련된 것 같습니다. 이것은 패키지를 다운로드 한 후 종속성에 필요한 모든 CLI 빌드 스크립트 또는 기본 라이브러리가 특정 환경에 대해 빌드되었는지 확인하는 것이라고 가정합니다. 이것이 링크 및 설치가이 스크립트를 호출하는 이유입니다.

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