package.json의 각 종속성을 최신 버전으로 어떻게 업데이트합니까?


2011

다른 프로젝트에서 package.json을 복사했으며 이제는 새로운 프로젝트이기 때문에 모든 종속성을 최신 버전으로 충돌시키고 싶습니다. 문제가 발생하면 문제를 해결하지 않아도됩니다.

가장 쉬운 방법은 무엇입니까?

내가 아는 가장 좋은 방법은 npm info express versionpackage.json을 수동으로 실행 하고 업데이트하는 것입니다. 더 좋은 방법이 있어야합니다.

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.65"
  },
  "private": true,
  "dependencies": {
    "express": "~3.0.3", // how do I get these bumped to latest?
    "mongodb": "~1.2.5",
    "underscore": "~1.4.2",
    "rjs": "~2.9.0",
    "jade": "~0.27.2",
    "async": "~0.1.22"
  }
}

업데이트 5/1/19 : 6 년 후에도이 문제에 대한 포괄적 인 솔루션으로 npm-check-updates 를 계속 유지하고 있습니다. 즐겨!


2
이 문제에 대한 또 다른 접근 방식을 보는 것이 좋습니다. 나는 Salita의 출력을 정말 좋아합니다. 내가 지금 제공하는 도구 인 github.com/tjunnone/npm-check-updates는 버전 관리 의미 체계 (예 : 1.x 또는> 2.1.0)를 보존하고 이름 / regex / devDeps 전용으로 필터링하는 기능입니다.
Raine Revere

1
여기에 더 나은 답변이 필요합니다. 분명히 의존성 해결을 통해 항상 최신 버전을 유지할 수는 없습니다. 가장 많은 수의 최신 버전의 모듈을 최대화하는 것은 일종의 최적화 문제입니다. 그러나 NPM은 어떤 모듈이 다른 모듈보다 최신 모듈인지 알 수 없습니다. npm update --latest xyz (여기서 xyz는 가능한 한 최신 모듈이고 다른 모든 모듈은 최신 호환 버전을 따릅니다).
Alexander Mills

2
npm은 각각에 대해 올바른 것을 다운로드하여 공유 종속성 간의 버전 충돌을 올바르게 처리합니다. 따라서 Dep A가 Dep C v1.0.0에 의존하고 Dep B가 Dep C v2.0.0에 의존하면 각각 설치되고 적절하게 사용됩니다. 따라서 원하는 최신 패키지를 자유롭게 설치할 수 있습니다.
Raine Revere

업그레이드를 강제로 시도하십시오 :npm outdated | sed '1d; s/ .*/@latest/' | xargs npm i --save
miorey

나는 항상이 답변을 확인하고 있습니다. 그러나 Google 결과가 떨어졌습니다. 이 의견이 관련성을 높이는 데 도움이 되길 바랍니다.
Zach Smith

답변:


2391

과 같은 NPM-체크인 업데이트는 이 지금은 그렇게 할 수있는 유일한 방법입니다.

npm i -g npm-check-updates
ncu -u
npm install

npm <3.11에서 :

모든 의존성 버전을로 변경하고 *실행하십시오 npm update --save. ( 참고 : npm의 최신 (3.11) 버전에서 손상됨 ).

전에:

  "dependencies": {
    "express": "*",
    "mongodb": "*",
    "underscore": "*",
    "rjs": "*",
    "jade": "*",
    "async": "*"
  }

후:

  "dependencies": {
    "express": "~3.2.0",
    "mongodb": "~1.2.14",
    "underscore": "~1.4.4",
    "rjs": "~2.10.0",
    "jade": "~0.29.0",
    "async": "~0.2.7"
  }

물론, 이것은 의존성을 업데이트하는 무딘 망치입니다. 당신이 말했듯이 프로젝트가 비어 있고 아무것도 깨질 수 없다면 괜찮습니다.

반면에보다 성숙한 프로젝트에서 작업하는 경우 업그레이드하기 전에 종속성에 주요 변경 사항이 없는지 확인하고 싶을 것입니다.

오래된 모듈을 확인하려면 다음을 실행하십시오 npm outdated. 최신 버전을 사용할 수있는 설치된 모든 종속성이 나열됩니다.


13
@thefourtheye : 일반적으로 package.json에 두면 안됩니다 *. 앱을 손상시키는 변경 사항을 적용하여 새 모듈 버전을 자동으로 설치하게 될 수 있습니다. --save여기서 사용하고 있기 때문에이 *패키지는 각 패키지의 현재 버전으로 바뀝니다.
josh3736

50
이 기능을 작동시킬 수 없습니다. 이 답변이 게시 된 후 npm에서 변경된 사항이 있습니까? 와일드 카드를 사용하면 와일드 npm install --save카드가 내에 남아 package.json있습니다.
davidtheclark

15
불행히도 사용도 update작동하지 않습니다. 여전히 와일드 카드가 남아 있습니다. 알고있는 다른 문서 나 내가 볼 수있는 다른 자료가 있습니까?
davidtheclark

120
조금 오래되었지만 다른 사람들에게 도움이 될 수 있습니다 : github.com/tjunnone/npm-check-updates | 사용 npm install -g npm-check-updates후, 설치 npm-check-updates의존성이 업데이트가 있는지 확인하고, npm-check-updates -u당신의 package.json 버전을 업데이트 할 수 있습니다. 그런 다음 그냥 npm install새 버전을 다운로드합니다.
RaphaelDDL

5
문제는 아마도 npm update --save대신 입력하여 dev 패키지를 업데이트하려고한다는 사실에서 비롯된 것입니다 npm update --save-dev.
adriendenat

1035

npm-check-updates 모든 종속성의 최신 버전으로 package.json을 자동으로 조정하는 유틸리티입니다

참조 https://www.npmjs.org/package/npm-check-updates를

$ npm install -g npm-check-updates
$ ncu -u
$ npm install 

[편집] 최신 버전을 사용하는 경우이 작업을 수행하는 데 덜 관입적인 (전역 설치는 피함) 방법 npm은 다음과 같습니다.

$ npx npm-check-updates -u
$ npm install 

135
이것은 npm 명령 자체를 통해 기본적으로 사용 가능해야하며 실제로는 종속성을 업데이트하는 최상의 솔루션입니다.
Mohammad Arif

7
기본적으로 npm의 일부 여야합니다. 완전히 동의하십시오. 그러나 그렇지 않으며이 솔루션은 산들 바람처럼옵니다. 감사합니다.
Stefan

2
나는 당신들이 [HARD]를 이것을 핵심 npm으로 가져 가려고한다고 가정합니까?
enorl76

3
@Batman 예 이전에 설치하지 않은 경우 가능합니다. 그렇지 않으면 npm update를 사용하십시오. ncu는 package.json을 업데이트합니다. 'node_modules'를 설치하거나 업데이트하지 않습니다.
Muzaffer

1
쓸모없는 패키지,로 패키지의 일부만 ncu -a업데이트하고 package.json도 업데이트하지 않습니다.
Alexander Kim

385

최신 NPM을 위해 업데이트

npm 2+ (노드 0.12+) :


npm outdated
npm update
git commit package-lock.json

고대 NPM (2014 년경) :

npm install -g npm-check-updates
npm-check-updates
npm shrinkwrap
git commit package-lock.json

뎁을 수축 포장하지 않으면 죽은 프로젝트로 인해 바람이 불 수 있습니다. 나는 다른 날 프로젝트를 꺼내고 내 뎁이 모두 오래되었거나 업데이트되었거나 엉망이되어서 실행되지 않습니다. 축소 포장을한다면 npm은 필요한 것을 정확히 설치했을 것입니다.


세부

지금까지 궁금한 점이 있다면 다음을 추천합니다.

사용 npm-check-updates또는 npm outdated최신 버전을 제안.

# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.  
$ npm update

#       OR

# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u

그런 다음 새로 설치하십시오 (RM이없는 종속성 경고가 나타납니다)

$ rm -rf node_modules
$ npm install 

마지막에 정확한 버전의 저장 npm-shrinkwrap.json과를npm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

이제 npm install정확한 버전을npm-shrinkwrap.json

npm-shrinkwrap.jsongit에 체크인 하면 모든 설치가 똑같은 버전을 사용합니다.

이것은 개발 (항상 모든 업데이트)에서 프로덕션으로 전환하는 방법입니다 (아무것도 만지지 않습니다).

ps Yarn은 패키지 목록을 Facebook으로 전송합니다 .


13
이것이 실제 정답입니다. 수십 개의 뎁이 설치된 상태에서 이것은 더 나은 방법입니다
Angel S. Moreno

6
경험상 모든 패키지를 한 번에 항상 업데이트하라는 조언은 위험 할 수 있습니다.
alphadogg

1
확실 해요 npm-shrinkwrap.json소스 를 만들고 소스 를 작성하고 업데이트 할 때마다 커밋하면 언제든지 '현재 위치로 돌아갈 수 있습니다'. 시작할 때 수축 포장 기능을 간과했습니다.
Michael Cole

21
이것은 질문에 대답 하지 않습니다 . 문제는 최신 버전 을 업데이트하는 방법 입니다. npm update최신 버전이 아닌 semver 버전으로 만 업데이트합니다.
gman

1
대안이 있다면 대답 할 수 있습니까 yarn upgrade package@version?
Ben Sinclair

201

수동으로 열고 변경 하지 않고 최신 버전으로 하나의 종속성 을 업데이트하려면 package.json다음을 실행하십시오.

npm install {package-name}@* {save flags?}

npm install express@* --save

참고로, npm-install


거부 된 편집에 대해 Vespakoen 사용자가 언급했듯이 다음과 같이 여러 패키지를 한 번에 업데이트 할 수도 있습니다.

npm install --save package-nave@* other-package@* whatever-thing@*

또한을 기반으로 쉘에 하나의 라이너를 할당합니다 npm outdated. 코드 및 설명 편집 을 참조하십시오 .


추신 : 나는 또한 package.json그런 것들을 수동으로 편집 해야하는 것을 싫어 합니다.)


8
이 솔루션은 훌륭합니다. 새 모듈을 설치하지 않고 단일 패키지를 최신 버전으로 명시 적으로 업데이트하는 빠르고 쉬운 방법입니다. 나는 npm-check-updates를 좋아하지만 모든 패키지를 최신 상태로 유지하려고합니다 . 항상 원하는 것은 아닙니다.
Chev

이것은 나를 위해 작동하지 않습니다npm install react-native-image-picker@* --save
Harry Moreno

1
@Chev : ncu는로 하나 또는 여러 개의 패키지를 쉽게 대상으로 지정할 수 있습니다 ncu express mocha chai. 로 패키지를 제외 할 수도 있습니다 ncu -x mocha. 위의 방법이 단일 패키지를 업데이트하는 가장 간단한 솔루션이라는 데 동의합니다.
Raine Revere

2
방금 아마도 더 최근의 문서에서 작동했던 비슷한 것을 사용했습니다. "*"대신 "최신"을 사용합니다npm install {package-name}@latest {save flags}
Drew Thomas

1
많은 감사,이 솔루션은 위대하고 내가 찾고있는 것입니다. 예상치 못한 문제가 발생할 수있는 다른 모든 종속성을 업데이트 할 필요없이 특정 패키지를 업데이트 할 수 있습니다!
Dany Wehbe

90

당신이 사용하는 일이 있다면 비주얼 스튜디오 코드를 당신의 IDE로,이 업데이트 만드는 재미 약간의 확장 package.json한 클릭 프로세스.

버전 렌즈

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


2
github.com/yavorsky/Bump라는 숭고한 텍스트 3 버전이 있지만 조금 느립니다.
Alexander Kim

4
누군가에게 명확하지 않은 경우 아름답게 작동하면 package.json의 버전을 최신 npm 저장소 버전과 비교하여 버전을 클릭하여 package.json의 텍스트 내용을 업데이트 할 수 있습니다. 그런 다음 "npm update"를 실행하여 npm에 새 버전을 설치하도록 지시하십시오.
MattG

2
: 이미 수 있음을 참고 내장 비주얼 스튜디오 코드 패키지 항목에 마우스를 가져 가면에 의해에 대한 간략한 설명과 패키지 종속성의 최신 버전을 볼 수 내장 패키지 버전 힌트
Gürol Canbek

1
코드 렌즈 링크를 클릭 할 때 패키지를 자동으로 설치하지는 않습니다. 단순히 package.json 버전 텍스트를 업데이트합니다.
RA.

59

이것은 npm 1.3.15부터 작동합니다.

"dependencies": {
  "foo": "latest"
}

10
알아 둘만 한. 내 생각에 이것은 일반적으로 이전 버전과 호환되지 않는 버전으로 자동 업데이트되므로 프로덕션 사이트에서 일반적으로 나쁜 습관 일 것입니다. 다음 주어진 메이저 버전 번호로 '~이'구문 잠금 당신 semver은 이전 버전과 호환됩니다.
Raine Revere

1
당신은 항상 자극에 뎁을 고정시킬 수 있습니다. 그것에 대한 명령이 있습니다. -2는 괜찮습니다.
Tobiasz Cudnik

5
나는 이것을 사용하여 npm shrinkwrap뎁스를 얼리는 것을 좋아 합니다.
daniellmb

이 작업을 수행하면 해당 패키지의 실제 버전을 어떻게 알 수 있습니까? 항목을 호출 "react": "16.9.0"한 다음 최신 항목을 추가하여 실행 했다고 가정하면 npm i프로젝트에 어떤 버전의 반응이 있는지 어떻게 알 수 있습니까? 이후 "react":"latest"내가 그랬어 내 package.json에 남아 무슨 일을하고, 숫자가 아닌 후에도npm i
theprogrammer

52
  1. *불안정을 포함하여 최신 릴리스의 버전으로 사용
  2. latest안정적인 최신 버전의 버전 정의로 사용
  3. 다음을 사용하여 정확하게 최신 안정 버전 번호로 package.json을 수정하십시오. LatestStablePackages

예를 들면 다음과 같습니다.

"dependencies": {
        "express": "latest"  // using the latest STABLE version
    ,   "node-gyp": "latest"    
    ,   "jade": "latest"
    ,   "mongoose": "*" // using the newest version, may involve the unstable releases
    ,   "cookie-parser": "latest"
    ,   "express-session": "latest"
    ,   "body-parser": "latest"
    ,   "nodemailer":"latest"
    ,   "validator": "latest"
    ,   "bcrypt": "latest"
    ,   "formidable": "latest"
    ,   "path": "latest"
    ,   "fs-extra": "latest"
    ,   "moment": "latest"
    ,   "express-device": "latest"
},

2
이것이 가장 좋은 대답입니다.
Peza September

1
이것은 받아 들여질
만한

여전히 가장 안전한 방법입니다. 좋은 대답입니다.
klewis

43

위의 가장 좋은 대답으로 찾은 유일한 경고는 모듈을 최신 버전으로 업데이트한다는 것입니다. 이는 불안정한 알파 빌드로 업데이트 될 수 있음을 의미합니다.

해당 npm-check-updates 유틸리티를 사용합니다. 우리 그룹은이 도구를 사용했으며 안정적인 업데이트를 설치하여 효과적으로 작업했습니다.

에티엔이 위에서 언급했듯이 다음을 설치하고 실행하십시오.

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 

3
rm -rf node_modulesnpm install나를 위해 의존성 경고를 없애기 전에 .
Michael Cole

1
package.json에 "*"가있는 경우 npm-check-updates를 실행하기 전에 "0"또는 "0.0"또는 "0.0.0"으로 변경하십시오.
igorpavlov

가장 쉬운 방법입니다. 번거 로움이 없습니다. 매력처럼 작동합니다. 모든 뎁이 제대로 업데이트되고 설치됩니다. Thx
Yoraco Gonzales

38

사용 가능한 최신 버전이있는 패키지를 보려면 다음 명령을 사용하십시오.

npm outdated

하나의 종속성 만 업데이트 하려면 다음 명령을 사용하십시오.

npm install yourPackage@latest --save

예를 들면 다음과 같습니다.

package.json파일에 의존성이 있습니다.

"@progress/kendo-angular-dateinputs": "^1.3.1",

그런 다음 작성해야합니다.

npm install @progress/kendo-angular-dateinputs@latest --save

멋지지만 --save (또는 --save-dev)는 필수 업데이트가 아닌 것 같습니다.
Burrich

35

npm-upgrade 작동 방식이 정말 좋습니다. 이 도구는 모든 종속성을 거치며 현재 버전을 최신 버전과 비교하여 원하는 경우 업데이트 할 수있는 간단한 명령 줄 유틸리티입니다.

다음은 npm-upgrade프로젝트의 루트 ( package.json파일 옆)에서 실행 된 후 발생하는 상황의 스크린 샷입니다 .

npm 업그레이드 예

각 종속성에 대해 업그레이드, 무시, 변경 로그보기 또는 프로세스 완료를 선택할 수 있습니다. 그것은 지금까지 나에게 효과적이었습니다.

편집 : 분명히 이것은 명령이 작동하기 전에 설치 해야하는 타사 패키지입니다. npm 자체와 함께 제공되지 않습니다.

npm install -g npm-upgrade

그런 다음 package.json 파일이있는 프로젝트의 루트에서 다음을 수행하십시오.

npm-upgrade

문서를 살펴보면 로컬 종속성과 만 작동하도록 만들어진 것으로 보입니다.
manncito

2
네, 방금 다른 사람들에게 언급했습니다. 답변에 대한 불만 없음 :)
Martin Schneider

2
흠, npm-upgrade나를 위해 일 하지 않았지만, npm upgrade내가 찾던 정확히 package.json 파일을 업데이트했습니다.
Grandizer

흠, 재미 있었어? 사용의 기본 개념 npm-upgrade은 업그레이드중인 대상을 정확하게보고 업그레이드 할 대상을 선택하고 선택한다는 것입니다. npm upgrade대부분의 사람들에게 잘 작동하지만 업그레이드 할 때 약간 더 제어해야 할 때가 있습니다.
manncito

1
당신은 또한 npx와 함께 이것을 사용할 수 있습니다 : npx npm-upgrade-아주 멋진! :)
x-ray

22

다음은 시맨틱 버전 번호와 일치하는 기본 정규 표현식이므로 모두 별표로 빠르게 바꿀 수 있습니다.

시맨틱 버전 정규식

([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)

사용하는 방법

JSON 파일에서 바꾸려는 패키지 버전을 선택하십시오.

스크린 샷 : 바꿀 텍스트를 선택하십시오

위에 정규식을 입력하고 올바른 텍스트와 일치하는지 확인하십시오.

스크린 샷 : 위의 semver 정규 표현식을 입력하십시오.

모든 일치 항목을 별표로 바꾸십시오.

스크린 샷 : 별표로 패키지 버전 교체

운영 npm update --save


패키지 이름에 숫자가 있으면 없습니다. 즉 : babel-preset-es2015, babel-preset-stage-0, hex2rgba입니다. 어쩌면 시작에서 따옴표 / 큰 따옴표를 검색하십시오 :('|")([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
rofrol

1
지원하는 여러 캐럿 (EJ 숭고한 텍스트) 처음 선택할 수있는 편집기에 :눌러 ctrl+d당신이 그들 모두를 선택할 때까지 여러 번, 다음 버전 번호 이동 (보도 바로 2 번 화살표)를 눌러 Ctrl 키 공간은, 다음 쓰기"*"
이반 카스텔라를

15

나는 최근에 gruntfile.js 마술을 위해 npm과 package.json을 사용하는 여러 프로젝트를 업데이트해야했습니다. 다음 bash 명령 (여러 줄 명령)이 저에게 효과적이었습니다.

npm outdated --json --depth=0 | \
jq --ascii-output --monochrome-output '. | keys | .[]' | \
xargs npm install $1 --save-dev

여기서 아이디어 : npm outdatedjson으로 출력 을 파이프하기 위해 jq
(jq는 json 명령 줄 파서 / 쿼리 도구)
(에 --depth대한 인수 사용에 주목하십시오 npm outdated)
jq는 출력을 최상위 패키지 이름으로 만 줄입니다.
마지막으로 xargs는 각 LIBRARYNAME을 한 번에 하나씩 npm install LIBRARYNAME --save-dev명령에 넣습니다.

위는 기계 실행에서 나를 위해 일한 것입니다 : node = v0.11.10 osx = 10.9.2 npm = 1.3.24

이것은 필수입니다 :
xargs http://en.wikipedia.org/wiki/Xargs (내가 생각하는 내 컴퓨터에 해당)

jq http://stedolan.github.io/jq/ (와 함께 설치 brew install jq)

참고 : 나는 단지 JSON 키의 package.json의 내부에 업데이트 된 라이브러리 저장 devDependancies사용하여 --save-dev, 당신 확실히 가능 내 프로젝트의 요구 사항이 아니었다.

그 후 나는 모든 것이 간단한 것으로 그레이비인지 확인합니다.

npm outdated --depth=0

또한 현재 설치된 최상위 라이브러리 버전을 확인할 수 있습니다.

npm list --depth=0

나는 jq를 좋아하고 거의 매일 사용하지만이 목적을 위해 나는 awk대신 간단하게 사용한다 :npm outdated --depth=0 | grep -v "^Package" | awk '{print $1}' | xargs npm install $1 --save-dev
Qorbani

1
내가 사용하고 있습니다cat package.json|jq -r '.devDependencies|keys|map(.+"@latest")|@sh'|xargs npm install --save-dev
Richard Ayotte

15

아름다운 (터미널 용) 대화 형보고 인터페이스를 통해 부드러운 접근 방식을 사용하려면 npm-check을 사용하는 것이 좋습니다 .

그것은 해머가 아니며 종속성 업데이트에 대한 결과적인 지식과 제어를 제공합니다.

여기에 기다리는 내용을 맛보기 위해 스크린 샷이 있습니다 (git 페이지에서 npm-check를 위해 스크랩) :

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


14

이 기능은에서 ​​소개되었습니다 npm v5. npm install -g npm@latestand를 사용하여 npm으로 업데이트

업데이트 package.json

  1. 삭제 /node_modulespackage-lock.json (if you have any)

  2. 을 실행하십시오 npm update. 이것은 의존성 package.json을 semver를 기반으로 최신으로 업데이트합니다 .

최신 버전으로 업데이트합니다. 당신은 함께 갈 수 있습니다npm-check-updates


13

yarn을 사용하는 경우 다음 명령은 모든 패키지를 최신 버전으로 업데이트합니다.

yarn upgrade --latest

그들의 문서에서 :

upgrade --latest명령은 패키지를 upgrade 명령과 동일하게 업그레이드하지만 package.json에 지정된 버전 범위는 무시합니다. 대신 최신 태그로 지정된 버전이 사용됩니다 (주 버전에서 패키지를 잠재적으로 업그레이드 할 수 있음).


1
의 종속성을 업데이트하지 않습니다 package.json- github.com/yarnpkg/yarn/issues/4390
Vandesh

13

npm 버전 5.2.0부터는 전역 npm 레지스트리 나 로컬 응용 프로그램에 추가 패키지를 설치하지 않고 한 줄로이를 실행할 수 있습니다. 이것은 npxnpm에 번들로 제공되는 새로운 유틸리티를 활용하여 수행 할 수 있습니다 . ( 자세한 내용은 여기를 클릭하십시오. )

프로젝트 루트에서 다음 명령을 실행하십시오.

npx npm-check-updates -u && npm i

방금 시도한 결과 작동합니다 ... npm install실제로 새 종속성을 다운로드 하기 위해 실행 해야했습니다. 그래서 뭔가 빠진 것이 아니라면 이것이 package.json을 업데이트하는 것 같아요
owsega

@owsega, 당신은 절대적으로 맞습니다, 감사합니다! npm install종속성이 업데이트 된 후에도 실행되도록 답변을 수정했습니다 .
ilyakam

13

나는 npm-check이것을 달성하기 위해 사용 합니다.

npm i -g npm npm-check
npm-check -ug #to update globals
npm-check -u #to update locals

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

정확한 버전 번호를 유지하는 또 다른 유용한 명령 목록 package.json

npm cache clean
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g #update globals
ncu -ua #update locals
npm i

그건 ncu -u아닌 ncu -ua두 번째 마지막 줄입니다. 하나의 문자 변경이 허용되지 않으므로 편집 할 수 없습니다. 그건 그렇고 매우 도움이됩니다.
Sohail Ahmed

10

Updtr!

오래된 npm을 기반으로 updtr은 최신 버전을 설치하고 각 종속성에 대해 npm 테스트를 실행합니다. 테스트가 성공하면 updtr은 새 버전 번호를 package.json에 저장합니다. 그러나 테스트에 실패하면 updtr이 변경 사항을 롤백합니다.

https://github.com/peerigon/updtr


9

업데이트 package.json를 위해 사용해야했던 명령 NPM 3.10.10:

npm install -g npm-check-updates
ncu -a
npm install

배경:

@ josh3736의 최신 명령을 사용했지만 package.json업데이트되지 않았습니다. 그런 다음 실행할 때 설명 텍스트를 발견했습니다 npm-check-updates -u.

선언 된 버전 범위에 따라 다음 종속성이 충족되지만 설치된 버전이 뒤떨어집니다. npm update를 사용하여 패키지 파일을 수정하지 않고 최신 버전을 설치할 수 있습니다. 어쨌든 패키지 파일의 종속성을 업데이트하려면 ncu -a를 실행하십시오.

npm-check-updates 설명서를 읽으면 차이점을 알 수 있습니다.

https://www.npmjs.com/package/npm-check-updates

-u, --upgrade : 패키지 파일 덮어 쓰기

-a, --upgradeAll : 최신 버전이 선언 된 semver 종속성을 만족하는 종속성도 포함합니다.

ncu는 다음을 npm-check-updates입력 할 때 메시지에 표시 되는 별칭입니다 npm-check-updates -u.

[INFO]: You can also use ncu as an alias

npm-check-updates v3에서는 -a기본 동작이며 package.json을 덮어 쓰는 것은 -u옵션 에만 있습니다.
Raine Revere

8

당신이 사용하는 경우 yarn, yarn upgrade-interactive당신은 당신의 오래된 종속성을 확인하고 다음 업데이트 할 것을 선택할 수 있습니다 정말 매끄러운 도구입니다.

Yarn over를 사용하는 더 많은 이유 npm. 허.


원 사는 빠르게 움직이고, 이미 1.0을 쳤으며 사용하기에 지독한 즐거움입니다. 이것은 새로 선택한 답변이어야합니다.
Josh Habdas

1
의 종속성을 업데이트하지 않습니다 package.json- github.com/yarnpkg/yarn/issues/4390
Vandesh

5

버전을 전환 할 때 모듈이 손상 될 수 있으므로 위의 명령은 안전하지 않습니다. 대신 다음을 권장합니다

  • npm shrinkwrap명령을 사용하여 실제 현재 노드 모듈 버전을 package.json으로 설정하십시오 .
  • https://github.com/bahmutov/next-update 명령 줄 도구를 사용하여 테스트를 중단하지 않는 경우 최신 버전으로 각 종속성 업데이트
npm install -g 다음 업데이트
// 패키지에서
다음 업데이트

1
활성 프로젝트에 대해 이전 버전과 호환되지 않는 변경 사항을 보호해야합니다. 영업 이익은 더 새 프로젝트 시작에 관심입니다 원하는 보다는 나중에 지금 일을 깨고에서 작업에 최신 버전을 가지고 있습니다.
Raine Revere

3

npm 5 및 노드 8을 사용하는 경우 다음 명령을 시도하십시오

npm 업데이트-저장


2
update명령은 원래 정의 이상의 종속성을 범하지 않는 것 같습니다. 경우 package.json선언 "1.2.3"정확히받지 않습니다 1.2.4. 그것은 좋거나 나쁘다 :)
Álvaro González

3

다음 코드 (허용됨)는 "너무 오래 걸린다"와 같은 내용을 작성했지만 아무 것도하지 않았습니다. 아마도 글로벌 플래그를 사용하는 것이 문제였습니다. idk.

npm i -g npm-check-updates
ncu -u
npm install

텍스트 편집기를 사용하고 대신 반 수동 접근 방식을 따르기로 결정했습니다.

내 개발자 의존성 package.json에서 notepad ++ 텍스트 편집기로 다음 과 같은 목록을 복사했습니다 .

"browserify": "10.2.6",
"expect.js": "^0.3.1",
"karma": "^0.13.22",
"karma-browserify": "^5.2.0",

검색 모드를 정규식으로 설정하고 ^\s*"([^"]+)".*$패턴을 사용 하여 패키지 이름을 가져 와서로 바꿨습니다 npm uninstall \1 --save-dev \nnpm install \1 --save-dev. "모두 바꾸기"를 클릭하십시오. otput은 다음과 같습니다.

npm uninstall browserify --save-dev 
npm install browserify --save-dev
npm uninstall expect.js --save-dev 
npm install expect.js --save-dev
npm uninstall karma --save-dev 
npm install karma --save-dev
npm uninstall karma-browserify --save-dev 
npm install karma-browserify --save-dev

나는 그것을 bash에 다시 복사하고 엔터를 쳤다. 모든 것이 업그레이드되어 정상적으로 작동했습니다. 그게 다야.

"browserify": "^16.1.0",
"expect.js": "^0.3.1",
"karma": "^2.0.0",
"karma-browserify": "^5.2.0",

나는 매번 그렇게해야하기 때문에 큰 문제라고 생각하지 않지만 package.json패키지 를 구문 분석하고 패키지를 업그레이드 하는 스크립트를 쉽게 작성할 수 있습니다 . 현재 버전의 lib를 유지하는 것과 같이 특별한 것이 필요한 경우 목록을 편집 할 수 있기 때문에이 방법이 더 좋습니다.


1
npm-check-updates를 사용하면 Windows에서 행잉 터미널이 알려진 문제입니다. --packageFile package.jsonstdin을 기다리지 않도록 추가하십시오 .
Raine Revere

@RaineRevere 감사합니다!
inf3rno 19

3

https://github.com/tjunnone/npm-check-updates 의 지침을 보고이 문제를 해결했습니다.

$ npm install -g npm-check-updates
$ ncu
$ ncu -u # to update all the dependencies to latest
$ ncu -u "specific module name"  #in case you want to update specific dependencies to latest

3

최신 버전의 NPM에 대한 다른 솔루션을 찾았습니다. 내가하고 싶은 것은 모든 "*"종속성을 가장 최신의 버전 번호로 바꾸는 것입니다. 논의 된 방법 중 어느 것도 나를 위해 일하지 않았습니다.

제가 한:

  1. 모든 "*"를 "^ 0.0.0"으로 바꾸십시오.
  2. 운영 npm-check-updates -u

package.json의 모든 것이 이제 마지막 버전으로 업데이트되었습니다.


3

전역 npm-check-updates 를 설치하지 않으려면 간단히 다음을 실행하십시오.

node -e "const pk = JSON.parse(require('fs').readFileSync('package.json', 'utf-8'));require('child_process').spawn('npm', ['install', ...Object.keys(Object.assign({},pk.dependencies, pk.devDependencies)).map(a=>a+'@latest')]).stdout.on('data', d=>console.log(d.toString()))"

2

대안은

"dependencies":{
    "foo" : ">=1.4.5"
}

npm update를 사용할 때마다 최신 버전으로 자동 업데이트됩니다. 자세한 버전 구문은 https://www.npmjs.org/doc/misc/semver.html에서 확인할 수 있습니다.


버전 관리의 한 가지 이유는 최신 주요 버전에서 이전 버전과 호환되지 않는 변경을 방지하기위한 것입니다. 이 버전 또는 '*'버전 번호를 사용하지 않는 것이 좋습니다. 영업을 유지하면서 제어 프로세스 완화 관련된 경우 가 발생한다.
Raine Revere

2

추가 패키지가없는 솔루션

모든 종속성 버전을 *다음으로 변경하십시오 .

"dependencies": {
    "react": "*",
    "react-google-maps": "*"
  }

그런 다음를 실행하십시오 npm update --save.

일부 패키지가 업데이트되었지만 일부는 업데이트되지 않았습니다.

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "*"
  }

이것은 까다로운 부분으로, 로컬 버전의 "반응"이 최신 버전보다 낮음을 의미합니다. 이 경우 npm은 "react"패키지를 다운로드하고 업데이트했습니다. 그러나 로컬 버전의 "react-google-maps"는 최신 버전과 동일합니다.

여전히 "변경"을 변경하지 않으려면 *이 모듈을 node_modules폴더 에서 삭제해야 합니다.

예를 들어 delete node_modules/react-google-maps.

마지막으로 다시 실행하십시오 npm update --save.

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "^4.10.1"
  }

npm update --save-dev개발 종속성을 업데이트하려는 경우 실행을 잊지 마십시오 .


1

Github를 사용하는 경우 Greenkeeper. https://greenkeeper.io/

Github 통합이며 설정이 매우 쉽습니다. 설치하면 지정한 리포지토리 (또는 원하는 경우 모두)에 풀 요청을 자동으로 생성하고 수동으로 작업을 수행하지 않고도 코드를 항상 최신 상태로 유지합니다. 그런 다음 PR은 CI 서비스에서 빌드를 트리거해야하며 성공 또는 실패한 검사에 따라 문제의 원인을 파악하거나 CI 통과시 단순히 PR을 병합 할 수 있습니다.

청지기 PR 1 청지기 PR 2

맨 아래에서 첫 번째 빌드가 커밋 ( "노드 v6.9로 업그레이드") 후에 실패하여 PR을 병합 할 수 있음을 알 수 있습니다. 많은 이모티콘이 함께 제공됩니다.

또 다른 대안은 https://dependencyci.com/ 이지만 집중적으로 테스트하지는 않았습니다. 첫 번째 모습을 보인 후 Greenkeeper는 일반적인 IMO에서 더 좋아 보이고 더 나은 통합 성을 갖습니다.


1
  • 오래된 npm
  • npm 업데이트

앱과 호환되는 최신 버전을 구하십시오. 그러나 최신 버전은 아닙니다.

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