개인적으로 node 기반의 프로젝트 경험은 즐겁다.
즐거운 이유는 재미가 있기 때문이 아닐까?
이것저것 모듈을 가져다가 쓰는 쏠쏠한 재미가 말이다.
하지만 가져다 쓴만큼의 책임을 필요로 한다.
node 생태계는 변화 무쌍하다.
이말인 즉슨 라이브러리의 변화 또한 그렇다는 것이다.
프로젝트의 진행 속도는 결코 종속성들의 진화 속도를 앞서지를 못한다.
근데 잠깐 그냥 라이브러리 버전 픽스하면 안 되는 거냐고?
힙스터, 그것이 약속이니까.
라이브러리 버전 관리
// pacakge.json
{
"dependencies": {
"axios": "^0.19.2",
"core-js": "^3.6.4",
"vue": "^2.6.11",
"vue-router": "^3.1.5",
"vuex": "^3.1.2"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.2.0",
"@vue/cli-plugin-e2e-cypress": "~4.2.0",
"@vue/cli-plugin-eslint": "~4.2.0",
"@vue/cli-plugin-router": "~4.2.0",
"@vue/cli-plugin-unit-mocha": "~4.2.0",
"@vue/cli-plugin-vuex": "~4.2.0",
"@vue/cli-service": "~4.2.0",
"@vue/eslint-config-standard": "^5.1.0",
"@vue/test-utils": "1.0.0-beta.31",
"axios-mock-adapter": "^1.18.1",
"babel-eslint": "^10.0.3",
"babel-plugin-istanbul": "^6.0.0",
"chai": "^4.1.2",
"eslint": "^6.7.2",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-node": "^11.0.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.0",
"eslint-plugin-vue": "^6.1.2",
"flush-promises": "^1.0.2",
"jsdom": "^16.2.2",
"jsdom-global": "^3.0.2",
"node-sass": "^4.12.0",
"nyc": "^15.0.0",
"sass-loader": "^8.0.2",
"terser-webpack-plugin": "^2.3.5",
"vue-template-compiler": "^2.6.11"
}
}
프로젝트의 라이브러리 정보는 package.json에 있다.
React.js나 Vue.js 등의 UI 프레임워크를 쓴다면 최소 저정도의 의존성이 생긴다.
문제는 저 많은 라이브러리의 버전을 어떻게 업데이트 할 것이냐이다.
라이브러리 최신 버전 확인
라이브러리의 최신 버전을 확인하는 방법은 다음과 같다.
npm outdated
패키지, 현재 버전 등의 정보를 출력한다.
실제 실행 결과는 대략 이렇다.
라이브러리 버전 업데이트
라이브러리 버전 업데이트 방법은 대략 둘로 나뉜다.
일괄 업데이트
npm update
npm update 명령어로 프로젝트 라이브러리를 일괄 업데이트 가능하다.
하지만 이러한 처리에는 문제가 있다.
바로 모든 라이브러리를 업데이트를 한다는 것이다.
구체적으로 다음과 같은 경우에 문제가 될 수 있다.
- 버전 고정이 필요한 라이브러리는?
- 특정 버전으로 업데이트가 필요한 라이브러리는?
수기 업데이트
npm i xxx@4.5.11
또 다른 방법으로는 npm i 명령어로 한땀한땀 관리하는 것이다.
npm update 혼합해서 쓴다면 수고를 덜 수 있을 것이다.
먼저 전체 업데이트 후에 특정 라이브러리를 다운그레이드 하면 될 테니까.
npm-check-updates
불편함을 느꼈다면 자연스러운 현상!
npm-check-updates를 이용해서 이러한 불편을 덜 수 있다.
npm-check-updates 설치
npm i npm-check-updates -g
라이브러리 최신 버전 확인
ncu
출력 결과는 npm outdated와 비슷하다.
라이브러리, 현재 버전 그리고 최신 버전 정보가 나타난다.
package.json 업데이트
ncu -u
ncu -u 출력 결과는 ncu 와 별반 차이가 없다.
다만 마지막 줄에 Run npm install to install new versions. 라는 안내 문구가 붙었다.
명령어 실행 결과는 package.json에 반영된다.
여기서 npm update와의 차이점이 나타난다.
ncu -u는 package.json 파일만을 변경한다.
node_modules에는 영향이 없다.
즉, 패키지를 설치하지 않는다는 것이다.
추가 변경이 가능하다!
node_modules 업데이트
npm i
package.json 확인을 마쳤다면 npm i 명령어로 라이브러리를 설치하자.
업데이트 예외
ncu -u -x @vue/eslint-config-standard,@vue/test-utils,eslint,eslint-plugin-vue,husky
업데이트 예외 또한 가능하다.
-x 플래그와 함께 제외할 라이브러리명을 기입한다.
제외할 라이브러리가 복수개라면 ',' 구분자를 사용한다.
'공학 > 정보성' 카테고리의 다른 글
Windows kubectl alias 설정 (0) | 2022.02.27 |
---|---|
코딩 컨벤션: 예시로 알아보자! (0) | 2021.09.05 |
자바스크립트 클로저(closure) (0) | 2020.08.19 |
오라클 끄기 / 켜기 (0) | 2020.08.16 |
데이터베이스 정규화 (0) | 2020.08.16 |