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


519

사이의 실질적인 차이는 무엇 npm installnpm 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

또한 : installupdate기본 핸들 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
경우 installupdate다르게에 지정 등 자식의 URL, 자식 태그에 대한 작업 package.json다음은 예제에 이러한 경우를 추가하는 좋은 것입니다.
joeytwiddle

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

82

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

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

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

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

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


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

11
그래서 나는 사용한다 npm installnpm 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.