정확한 이전 버전의 NPM 패키지를 설치하는 방법은 무엇입니까?


915

nvm을 사용하여 노드 v0.4.10을 다운로드하고 해당 버전의 노드와 작동하도록 npm을 설치했습니다.

Express를 사용하여 설치하려고합니다.

npm install express -g

Express에서 노드 버전> = 0.5.0이 필요하다는 오류가 발생합니다.

내가 노드 +의 지시에 따라 오전 글쎄,이, 이상한 표현 + MongoDB를 튜토리얼 여기에 사용되는 노드 v0.4.10, 표현은 내가 가정입니다 / 노드 v0.4.10에게 제공했다. 내 가정이 맞다면 npm에게 설정에서 작동하는 버전을 가져 오도록 어떻게 지시합니까?


7
왜 노드 버전 만 업데이트하지 않습니까? 당신이 찾을 수있는 깨진 행동보다 더 많은 좋은 추가가 있어야합니다.
Fabrício Matté

1
때로는 옵션이 아닙니다. nvm을 사용하여 다운 그레이드 한 경우 일부 다른 그룹이 사용해야하는 실행 가능 노드 버전을 제어하는 ​​등의 이유가있을 수 있습니다.
fool4jesus

답변:


1582

이전 버전의 패키지를 설치해야하는 경우 지정하십시오.

npm install <package>@<version>

예를 들면 다음과 같습니다. npm install express@3.0.0

또한 추가 할 수 있습니다 --save귀하의 package.json 종속성, 또는에 추가하는 명령에 깃발을 --save --save-exact당신이 당신의 package.json 종속성에 지정된 정확한 버전을 원하는 경우 플래그.

install명령은 여기에 설명되어 있습니다 : https://docs.npmjs.com/cli/install

사용 가능한 패키지 버전이 확실하지 않은 경우 다음을 사용할 수 있습니다.

npm view <package> versions

그리고 npm view패키지에 관한 다른 것들도 볼 수 있습니다. https://docs.npmjs.com/cli/view


4
나는 이것이 가장 가까운 메이저 버전을 설치할 것이라고 생각하므로 stackoverflow.com/a/22345808/1074400
Aakil Fernandes

2
@AakilFernandes 정확한 버전을 지정하면 정확한 버전이 설치됩니다. 시맨틱 버전 범위를 지정하면 정확히 일치하지 않을 수 있습니다. 이러한 점에서 install 명령에 대한 고유 한 것은 없습니다.
Bret Copeland

6
npm view <package> versions -json여러 버전의 목록 끝에 줄임표를 사용하지 않고 모든 단일 버전을 볼 수 있습니다.
TheDarkIn1978

5
를 사용 npm install express@3.0.0하면 정확한 버전 3.0.0을 얻지 못하고 최신 3.xx 버전을 얻게됩니다. 특정 버전을 얻으려면을 사용해야 npm install express@3.0.0 --save-exact합니다. 이 블로그 게시물을 참조하십시오 : 60devs.com/npm-install-specific-version.html
Patrick Hund

5
@PatrickHund 아니오, 정확히 3.0.0 버전 npm install express@3.0.0을 얻을 것 입니다. 최신 3.xx 는 package.json 에 작성되는 방식에 영향을 미치며 이미 답변에서 다루었습니다. 또한, 또는 둘 중 하나와 함께 사용해야합니다.-단독으로 사용하기에는 충분하지 않습니다. npm install express@^3.0.0--save-exact--save-exact--save--save-dev
Bret Copeland

93

아주 쉽습니다. 예를 들어 다음과 같이 작성하십시오.

npm install -g npm@4.6.1

또는:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

1
latestnext버전 태그에 감사드립니다 !
Jimmy Adaro 2016 년

@inaps를 사용하면 많은 사용자가이 페이지를 방문하여 패키지 에코 시스템에 영향을주는 방식을 모르고 복사 / 붙여 넣기 만하면 전세계에 설치하려는 패키지를위한 플래그 라는 점에 유의할 수 있습니다-g . 우리는 모두 "그 사람"
이었습니다

73

먼저 이전 버전을 제거한 다음 문자 그대로 다음을 실행 하십시오.

npm install express@3.X

그리고 안정적이거나 최근에

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

12
X숫자 버전 번호 의 리터럴입니까, 아니면 스탠드 인입 니까?
Keith Thompson

7
그것은 예 / 아니오 질문이 아니라 하나의 질문입니다. 시도했지만 npm install express@3.X작동하는 것 같습니다. 그 기능이나 사고가 npm버전 번호를 구문 분석합니까?
Keith Thompson

3
@KeithThompson 그렇습니다! 헤헤, 농담이야 ... npm파싱 하는 방법이야 . docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz

3
@gonz : 문자 그대로 X입니다.
Keith Thompson

1
나는 왜 그 일이 당신을 위해 일했는지 설명하고 싶었습니다. 나는 Saurabh의 원래 의도 나 당신이하려는 일을 모른다. 3.X는> = 3.0 및 <4.0을 의미합니다.
gonz


2

다음 명령을 사용하여 npm 패키지를 업데이트 할 수 있습니다.

npm install <package_name>@<version_number>

예: npm install yargs@12.02


1

이 유형의 문제를 해결하는 일반적인 방법이 있는데, 특히 저장소를 로컬로 실행하기 위해 리포지토리를 복제 할 때 도움이 될 수 있지만 버전에 대한 약간의 분석이 필요합니다.

패키지를 사용하여 npm-check-updates그림 ( https://www.npmjs.com/package/npm-check)에 표시된 것처럼 사용 가능한 최신 버전으로 선언되지 않은 패키지 버전 (package.json 파일에 따라)을 확인합니다 -업데이트 ) :

여기에 이미지 설명을 입력하십시오

이 정보를 사용하여 다른 패키지의 업데이트 상태를 확인하고 업그레이드 / 분해 할 패키지와 그렇지 않은 패키지를 결정할 수 있습니다.

나열된 모든 패키지를 업데이트하기로 결정했다고 가정하면 ncu -upackage.json 파일 만 수정 하는 명령을 사용할 수 있습니다 . npm install설치된 패키지 및 package-lock.json을 업데이트하려면 실행하십시오 .

그런 다음 리포지토리의 요구 사항에 따라 필요한 버전을 조정하여 특정 버전을 설치 npm view <package> versions하고 npm install <package>@<version>


1

npm install -g npm@version

다운 그레이드하려는

npm install -g npm@3.10.10


하지만 현지에서 필요한 경우? 저장해야합니까?
AlexNikonov

예, 패키지가 로컬로 다운로드됩니다.
Lakshay Sharma 2016

@AlexNikonov는 -g(전세계 설치의 경우 현재 프로젝트 디렉토리에 위치 /node_modules) --save--save-devpackage.json
생략

0

다음 명령을 사용하여 이전 버전의 npm 패키지를 설치할 수 있습니다.

npm install packagename@version


-3

우분투에서는이 명령을 시도 할 수 있습니다.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

특정 버전 : sudo n 안정 대신 sudo n 8.11.3

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