Node.js package version update tool NCU
24. 6. 27.약 5 분
Node.js package version update tool NCU
npm-check-updates - https://www.npmjs.com/package/npm-check-updates
1. 배경
npm install을 사용하여 패키지 설치를 하는 경우 package.json에는 보통 패치버전을 허용하는 형태로 저장된다.
{
    "..." : "...",
    "devDependencies": {
        "@vue/repl": "^3.4.0",
        "...": "..."
    }
}
^3.4.0의 경우 3.4 버전 기준 패치버전인 3.4.x로만 업데이트 되기 때문에 매이저 또는 마이너가 변경되는 경우 개별적으로 업데이트 해줘야하는 불편함이 있었다.
팁
업데이트가 필요한 패키지는 npm outdated로 확인할 수 있다.
2. npm-check-updates
검색을 해보니 많은 사람들이 npm-check-updates 패키지로 최신 버전으로 업데이트하는 것을 확인할 수 있었다. 이 툴은 전역으로 설치하여 사용한다.
npm install -g npm-check-updates
이후 ncu라는 명령어로 업데이트 될 패키지와 변경될 버전을 확인할 수 있다.
$ ncu
Checking /Users/gs/workspaces/docs/docmoa/package.json
[====================] 19/19 100%
 @vue/repl                         ^3.4.0  →        ^4.2.1
 chart.js                          ^4.4.1  →        ^4.4.3
 echarts                           ^5.4.3  →        ^5.5.0
 katex                            ^0.16.9  →      ^0.16.10
 mermaid                          ^10.8.0  →       ^10.9.1
 vue                              ^3.4.19  →       ^3.4.30
 vuepress-plugin-search-pro  ^2.0.0-rc.31  →  ^2.0.0-rc.50
Run ncu -u to upgrade package.json
명령의 결과로 표기되는것 처럼 package.json의 내용을 자동으로 수정하려면 ncu -u로 옵션을 추가하여 실행시켜야 한다.
위험
자동업데이트는 편하지만 영향도를 알 수 없는 경우 최신버전이 무엇인지 확인하는 용도로만도 사용할 수 있다.
이후, ncu -u를 수행하면 package.json 내용을 자동으로 업데이트 해준다. 업데이트된 package.json을 기준으로 npm install을 수행하여 패키지 업그레이드 작업을 완료한다.
$ ncu -u
Upgrading /Users/gs/workspaces/docs/docmoa/package.json
[====================] 19/19 100%
 @vue/repl                         ^3.4.0  →        ^4.2.1
 chart.js                          ^4.4.1  →        ^4.4.3
 echarts                           ^5.4.3  →        ^5.5.0
 katex                            ^0.16.9  →      ^0.16.10
 mermaid                          ^10.8.0  →       ^10.9.1
 vue                              ^3.4.19  →       ^3.4.30
 vuepress-plugin-search-pro  ^2.0.0-rc.31  →  ^2.0.0-rc.50
Run npm install to install new versions.
3. 선택적 업데이트
일괄 버전 업데이트가 아니라 선택적으로 하려는 경우 ncu -i --format group 명령을 사용할 수 있다.
- 위아래 키보드를 눌러 패키지를 선택한다.
 - 스페이스바로 선택/미선택 을 조절할 수 있다.
 a를 누르면 모든 것에 대해 선택/미선택을 조절할 수 있다.- 원하는 패키지를 선택 후 
엔터키로 선택을 저장한다. 
$ ncu -i --format group
Upgrading /Users/gs/workspaces/docs/docmoa/package.json
[====================] 19/19 100%
? Choose which packages to update › 
  ↑/↓: Select a package
  Space: Toggle selection
  a: Toggle all
  Enter: Upgrade 
Patch   Backwards-compatible bug fixes
❯ ◉ chart.js                          ^4.4.1  →        ^4.4.3
  ◉ vue                              ^3.4.19  →       ^3.4.30
  ◉ vuepress-plugin-search-pro  ^2.0.0-rc.31  →  ^2.0.0-rc.50
  ◉ vuepress-theme-hope         ^2.0.0-rc.30  →  ^2.0.0-rc.50
Minor   Backwards-compatible features
  ◉ echarts                           ^5.4.3  →        ^5.5.0
  ◉ mermaid                          ^10.8.0  →       ^10.9.1
Major   Potentially breaking API changes
  ◯ @vue/repl                         ^3.4.0  →        ^4.2.1
Major version zero   Anything may change
  ◯ katex                            ^0.16.9  →      ^0.16.10
엔터키를 누르면 npm install 여부를 물어본다.
✔ Choose which packages to update › 
 chart.js                          ^4.4.1  →        ^4.4.3
 echarts                           ^5.4.3  →        ^5.5.0
 mermaid                          ^10.8.0  →       ^10.9.1
 vue                              ^3.4.19  →       ^3.4.30
 vuepress-plugin-search-pro  ^2.0.0-rc.31  →  ^2.0.0-rc.50
 vuepress-theme-hope         ^2.0.0-rc.30  →  ^2.0.0-rc.50
? Run npm install to install new versions? › (Y/n)
