etc./StackOverFlow

package.json의 각 종속성을 최신 버전으로 업데이트하는 방법은 무엇입니까?

청렴결백한 만능 재주꾼 2021. 11. 26. 06:55
반응형

질문자 :Raine Revere


package.json 을 복사했고 이제 새로운 프로젝트이기 때문에 모든 종속성을 최신 버전으로 충돌시키고 싶습니다.

이 작업을 수행하는 가장 쉬운 방법은 무엇입니까?

내가 아는 가장 좋은 방법은 npm info express version package.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" } }

Yarn 관련 솔루션은 이 StackOverflow 스레드를 참조하세요.



npm-check-updates 가 지금 이것을 가능하게 하는 유일한 방법인 것 같습니다.

 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 실행하십시오. 최신 버전을 사용할 수 있는 설치된 종속성이 나열됩니다.

Yarn 특정 솔루션의 경우 이 StackOverflow 답변을 참조하세요.


josh3736

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

Etienne

npm v2+용으로 업데이트됨

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

deps를 수축 포장해야 합니다. 그렇지 않으면 프로젝트가 중단될 수 있습니다. 요전에 프로젝트를 꺼냈는데 내 deps가 모두 구식/업데이트/난장판이었기 때문에 실행되지 않았습니다. 내가 수축 포장했다면 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.jsonnpm shrinkwrap

 $ rm npm-shrinkwrap.json $ npm shrinkwrap

이제 npm install npm-shrinkwrap.json 정확한 버전을 사용합니다.

npm-shrinkwrap.json 을 git에 체크인하면 모든 설치가 정확히 동일한 버전을 사용합니다.

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

ps Yarn이 패키지 목록을 Facebook으로 보내고 있습니다 .


Michael Cole

package.json 을 수동으로 열고 변경할 필요 없이 하나의 종속성을 최신 버전으로 업데이트하려면 다음을 실행할 수 있습니다.

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

 npm install express@* --save

참고로 npm-install


업데이트 : 최신 버전에는 대신 최신 플래그가 필요할 수 있습니다(예: npm install express@latest


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

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

npm outdated 기반으로 한 쉘용 단일 라이너를 지원합니다. 코드 및 설명 은 편집 을 참조하십시오.


package.json 을 수동으로 편집해야 하는 것을 싫어합니다 ;)


laconbass

Visual Studio Code package.json 클릭 한 번으로 업데이트할 수 있는 재미있는 확장 기능입니다.

버전 렌즈

여기에 이미지 설명 입력

GitLab 리포지토리


GollyJer

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

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

Tobias Cudnik

  1. 불안정한 버전을 포함하여 최신 릴리스의 버전으로 * 를 사용하십시오.
  2. 최신 안정 버전에 대한 버전 정의로 latest 사용
  3. LatestStablePackages 사용하여 정확한 최신 안정 버전 번호로 package.json을 수정합니다.

다음은 예입니다.

 "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" },

Mr. Sun Lin

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

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

Etienne이 위에서 언급했듯이 다음과 같이 설치하고 실행하십시오.

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

Tyler Davis

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

 npm outdated

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

 npm install yourPackage@latest

예를 들어:

package.json 파일에 종속성이 있습니다.

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

그러면 다음과 같이 작성해야 합니다.

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

--save-dev 은(는) 무슨 뜻인가요?

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

npm 설치 문서에서 다음과 같이 말합니다.

-D, --save-dev: 패키지가 devDependencies에 나타납니다.


StepUp

npm-upgrade 작동 방식이 정말 마음에 듭니다. 모든 종속성을 살펴보고 최신 버전과 비교하여 현재 버전을 확인하고 원하는 경우 업데이트할 수 있는 간단한 명령줄 유틸리티입니다.

다음은 프로젝트의 루트( package.json 파일 npm-upgrade 를 실행한 후 일어나는 일의 스크린샷입니다.

npm 업그레이드 예

각 종속성에 대해 업그레이드, 무시, 변경 로그 보기 또는 프로세스 완료를 선택할 수 있습니다. 지금까지 저에게 큰 도움이 되었습니다.

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

 npm install -g npm-upgrade

그런 다음 package.json 파일이 있는 프로젝트의 루트에서:

 npm-upgrade

manncito

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

시맨틱 버전 정규식

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

사용하는 방법

JSON 파일에서 교체할 패키지 버전을 선택합니다.

스크린샷:바꾸려는 텍스트 선택

위의 정규식을 입력하고 올바른 텍스트와 일치하는지 확인합니다.

스크린샷: 위에 semver 정규식 입력

모든 일치 항목을 별표로 바꿉니다.

스크린샷:별표로 패키지 버전 바꾸기

npm update --save 실행


SavoryBytes

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

그것은 망치가 아니며 종속성 업데이트에 대한 더 중요한 지식과 제어를 제공합니다.

여기에 무엇이 기다리고 있는지 맛보기 위해 스크린샷이 있습니다(npm-check에 대한 git 페이지에서 스크랩).

여기에 이미지 설명 입력


TWright

이 기능은 npm v5 에서 도입되었습니다. npm install -g npm@latest 사용하여 npm으로 업데이트하고

package.json 을 업데이트하려면

  1. /node_modules 및 package-lock.json 삭제 package-lock.json (if you have any)

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

최신 버전으로 업데이트하려면. npm-check-updates 로 갈 수 있습니다.


Sibiraj

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

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

아이디어는 다음과 같습니다. npm outdated 출력을 jq
(jq는 json 명령줄 파서/쿼리 도구입니다)
npm outdated --depth 인수 사용에 주의)
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 설치했습니다)

--save-dev 를 사용하여 devDependancies 내부의 package.json에 업데이트된 라이브러리만 저장합니다. 이는 내 프로젝트의 요구 사항이었습니다.

그런 다음 간단한 도구로 모든 것이 그레이비인지 확인합니다.

 npm outdated --depth=0

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

 npm list --depth=0

andxyz

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

yarn upgrade --latest

그들의 문서에서 :

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


fotijr

npm 버전 5.2.0부터는 전역 npm 레지스트리나 애플리케이션에 로컬로 추가 패키지를 설치하지 않고 한 줄로 실행할 수 있는 방법이 있습니다. 이것은 npm과 함께 번들로 제공되는 npx 유틸리티를 활용하여 수행할 수 있습니다. ( 자세한 내용을 보려면 여기를 클릭하십시오. )

프로젝트의 루트에서 다음 명령을 실행합니다.

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

ilyakam

이를 달성하기 위해 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

goksel

업데이트!

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

https://github.com/peerigon/updtr


David Braun

yarn 을 사용하는 경우, yarn upgrade-interactive 는 오래된 종속성을 보고 업데이트할 항목을 선택할 수 있는 정말 멋진 도구입니다.

npm 보다 Yarn을 사용해야 하는 더 많은 이유. 헤.


Yangshun Tay

NPM 3.10.10package.json 을 업데이트하는 데 사용해야 했던 명령:

 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 종속성을 충족하는 종속성까지 포함

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

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

Ogglas

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

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

gleb bahmutov

최신 버전의 NPM에 대한 다른 솔루션을 찾았습니다. 내가 원하는 것은 모든 "*" 종속성을 명시적인 최신 버전 번호로 바꾸는 것입니다. 논의된 방법 중 어느 것도 저에게 효과가 없었습니다.

제가 한:

  1. 모든 "*"를 "^0.0.0"으로 바꿉니다.
  2. npm-check-updates -u 실행

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


miqrc

전역 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()))"

Yukulélé

npm 패키지 설치를 포함하지 않는 더 쉬운 솔루션을 찾고 있다면 updatepackagejson.com을 확인하겠습니다.

updatepackagejson.com


Andrei Gec

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

npm 업데이트 --저장


krunal shah

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

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

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

package.json 의 dev 종속성에서 메모장 ++ 텍스트 편집기로 다음과 같은 목록을 복사했습니다.

 "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 "모두 바꾸기"를 클릭했습니다. 출력은 다음과 같습니다.

 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에 다시 복사하고 Enter 키를 누릅니다. 모든 것이 업그레이드되었고 잘 작동했습니다. 그게 다야.

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

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


inf3rno

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

Sunil

대안은

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

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


Haven

추가 패키지가 없는 솔루션

모든 종속성의 버전을 * 변경합니다.

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

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

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

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

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

* 를 "업데이트" node_modules 폴더에서 이러한 모듈을 삭제해야 합니다.

예를 들어 node_modules/react-google-maps 삭제합니다.

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

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

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


Alexey Volodko

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

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

그린키퍼 홍보 1 그린키퍼 홍보 2

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

또 다른 대안은 https://dependencyci.com/ 이지만 집중적으로 테스트하지는 않았습니다. Greenkeeper는 처음 본 후 일반적으로 IMO에서 더 좋아 보이고 더 나은 통합을 제공합니다.


Luca Steeb

출처 : http:www.stackoverflow.com/questions/16073603/how-to-update-each-dependency-in-package-json-to-the-latest-version

반응형