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

다른 프로젝트에서 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 를 계속 유지하고 있습니다. 즐겨!



답변

과 같은 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. 최신 버전을 사용할 수있는 설치된 모든 종속성이 나열됩니다.


답변

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 


답변

최신 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으로 전송합니다 .


답변

수동으로 열고 변경 하지 않고 최신 버전으로 하나의 종속성 을 업데이트하려면 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그런 것들을 수동으로 편집 해야하는 것을 싫어 합니다.)


답변

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

버전 렌즈

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


답변

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

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


답변

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