npm 설치 대 업데이트-차이점은 무엇입니까?


519

사이의 실질적인 차이는 무엇 npm install과 npm update? 언제 사용해야합니까?

답변:


654

package.json에 지정된 패키지 버전의 npm 설치 와 npm 업데이트 처리의 차이점 :

{
  "name":          "my-project",
  "version":       "1.0",                             // install   update
  "dependencies":  {                                  // ------------------
    "already-installed-versionless-module":  "*",     // ignores   "1.0" -> "1.1"
    "already-installed-semver-module":       "^1.4.3" // ignores   "1.4.3" -> "1.5.2"
    "already-installed-versioned-module":    "3.4.1"  // ignores   ignores
    "not-yet-installed-versionless-module":  "*",     // installs  installs
    "not-yet-installed-semver-module":       "^4.2.1" // installs  installs
    "not-yet-installed-versioned-module":    "2.7.8"  // installs  installs
  }
}

요약 : 유일하게 큰 차이점은 이미 퍼지 버전 관리가 설치된 이미 설치된 모듈입니다 ...

  • 에 의해 무시된다 npm install
  • 에 의해 업데이트 npm update

또한 : install및 update기본 핸들 devDependencies에 의해 다르게

  • npm install플래그를 추가 하지 않으면 devDependencies 를 설치 / 업데이트합니다--production
  • npm update플래그를 추가 하지 않으면 devDependencies 를 무시합니다.--dev

왜 npm install전혀 사용하지 않습니까?

npm install에서 종속성을 처리하는 것 외에 더 많은 것을 볼 수 있기 때문 입니다 package.json. npm install 에서 볼 수 있듯이 ...

  • 노드 모듈 수동 설치
  • 전역으로 설정 하십시오 (쉘에 넣습니다 PATH).npm install -g <name>
  • git 태그로 설명 된 특정 버전을 설치하십시오.
  • 자식 URL에서 설치
  • 와 함께 강제로 다시 설치 --force

20
그리고 ~1.3어때요?
— Offirmo

6
버전이 ^ 5.0.9와 같은 경우 어떻게해야합니까? 그리고 npm install --save somePackage*를 의존성에 저장할 수 있습니까?
— KwiZ

5
또한 postinstall설치시 실행되지만 업데이트에는 실행되지 않는 것과 같은 스크립트가 있습니다.
— Michael Marvick

2
경우 install와 update다르게에 지정 등 자식의 URL, 자식 태그에 대한 작업 package.json다음은 예제에 이러한 경우를 추가하는 좋은 것입니다.
— joeytwiddle

2
퍼지 버전 수단의 물결 @Offirmo "업데이트는이 패키지의 최신 작은 (버그 수정) 릴리스"즉, 버전의 마지막 번호 인 마이너 버전 1.3.0 -> 1.3.1이 유사하다 ^1.3.0곳, ^즉, 업데이트 주요 버전 1.3.0 -> 1.4.0.
— 보얀 쿠 슬레 프

82

npm install 은 package.json파일 및 해당 종속성 에 나열된 모든 모듈을 설치 합니다 .

npm update 는 node_modules디렉토리의 모든 패키지 와 해당 종속성을 업데이트 합니다 .

npm install express 는 Express 모듈과 해당 종속 항목 만 설치합니다.

npm update express 는 Express 모듈을 업데이트합니다 (npm@2.x로 시작하여 종속성을 업데이트하지 않음).

따라서 모듈이 이미 있고 새 버전을 얻으려는 경우 업데이트가 제공됩니다.


5
package.json 파일에 특정 버전을 지정하지 않으면 npm install은 최신 버전의 모듈을 가져옵니다. 그래서 이것은 일종의 업데이트입니다.
— saeed

11
그래서 나는 사용한다 npm install나 npm update? 즉, 나는 지금 사용 npm install하고 있으며 업데이트도하는 것처럼 보입니다. 왜 내가 사용해야하는 이유가 npm update있습니까?
— Borek Bernard

4
따라서 updatepackage.json에 관계없이 항상 최신 버전으로 업데이트되며 package.json에 install제공된 버전을 존중합니까?
— Borek Bernard

1
update최신 버전의 모듈을 설치 (또는 업데이트)합니다. install표시되지 않은 경우 최신 버전의 모듈을 설치합니다. 그렇지 않으면 현재 버전을 유지합니다.
— tenphi

11
@Borek npm update은 package.json에 상관없이 최신 버전으로 업데이트합니다. "express": "3.x"가 있고 버전 3.1.0 인 경우 최신 3.x 태그로 업데이트됩니다. 4.x 버전이 있으면 최신 버전이 설치되지 않습니다.
— gcochard

47

대부분의 경우 npm에 게시 된 최신 버전의 모듈이 설치됩니다.

npm install express --save

또는 최신 버전 사용으로 모듈을 업그레이드하는 것이 좋습니다.

npm install express@latest --save --force

--save: 패키지가 종속성에 나타납니다.

추가 정보 : npm-install


11
npm install express@latest --save --force내가 원하는 바로 그 것이었다.
— ThomasReggi 2014

2
대부분의 경우에? 다른 경우는?
— Dmitri Zaitsev

9

많은 차이점이 이미 언급되었습니다. 여기 하나 더 있습니다 :

실행 npm install소스 디렉토리의 상단에있는 것은 다양한 스크립트를 실행합니다 : prepublish, preinstall, install, postinstall. 이러한 스크립트의 기능에 npm install따라 종속성을 설치하는 것보다 훨씬 많은 작업을 수행 할 수 있습니다.

난 그냥 사용 사례 했어 prepublish부를 것이다을 make하고는 Makefile(가) 경우 종속성을 가져 오기 위해 설계되었습니다 package.json업데이트되었다. npm install내부에서 호출 Makefile하면 무한 재귀가 발생하고 호출 npm update은 정상적으로 작동하고 모든 종속성을 설치하여 make직접 호출 된 경우에도 빌드를 진행할 수 있습니다.


1
하나의 의미는 예, 당신을 위해, 업데이트 한 경우이다 redis모듈 및 other_module이전 버전의 필요 redis, npm install other_module즉 보장합니다 other_module이전 버전을 사용합니다. other_module/node_modules/redis필요한 경우 추가 할 수 있습니다 .
— jlukanta

4

npm update: package.json에있는 최신 노드 모듈로 설치 및 업데이트

npm install: package.json에 정의 된 설치 노드 모듈 (업데이트없이)


npm 버전 6.9.0을 사용하면 다음과 같은 동작이 관찰 npm update됩니다 package-lock.json. 의 많은 종속성이 생략됩니다 . 필요한 모든 패키지를 사용할 수 package-lock.json있고 정확하려면 항상 npm install바로 실행해야합니다 npm update.
— Manfred
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.