npm을 통해 node-module을 설치할 때 사용하는 명령어로 npm install 과 npm ci 가 있다.
둘 다 npm node-module을 설치하는 명령어이지만, 서로 다른 차이점이 있다.
npm 설치 명령어는 package.json 과 package-lock.json 파일과 밀접한 연관 관계가 존재한다.
먼저 package.json은 설치하고자 하는 모듈의 의존성 목록을 정의하며, 각 module의 version은 version range를 따른다.
이 때 version은 다음과 같이 사용 가능한 범위를 지정할 수 있다.
참고) https://docs.npmjs.com/cli/v6/using-npm/semver#ranges
semver | npm Docs
The semantic versioner for npm
docs.npmjs.com
반면, package-lock.json은 설치된 node-module의 정확한 version을 명시한다.
"devDependencies": {
"fbr": "latest",
"fs": "0.0.1-security",
"https": "^1.0.0",
"node-static": "^0.7.11"
}
package.json과 package-lock.json이 어떻게 다른지를 알았으니, 이제 npm install 과 npm ci가 어떻게 다른 지 비교해보자.
npm install
- package.json을 읽어 dependency list를 만들고, package-lock.json을 생성하여 실제 설치할 dependency version을 명시한다.
npm ci
- package-lock.json이 무조건 존재해야 한다.
- package-lock.json 파일에 명시된 version으로 node module을 설치하고, package.json을 해당 version이 유효한지를 체크하는 목적으로 사용한다.
- 위 2가지 조건이 맞지 않는 경우 npm ci는 실행되지 않는다.
- 실행 시 기존 node-module을 삭제 후 재설치 한다.
그래서, npm install을 실행 시 package.json 파일만 있으면 되고, package-lock.json은 그 결과로 생성된다.
그러나, npm ci를 실행할 경우에는 package.json 과 package-lock.json 파일 모두 존재해야 한다.
요즘 같이 하나의 프로젝트에 여러 명의 개발자들이 협업하는 경우에 node module의 version을 일치시키는 것은 매우 중요한 이슈이다.
이를 위해 npm ci가 더 효율적으로 다가올 수 있다. 또한, npm ci는 명확한 version이 지정되어 있어 설치 자체도 매우 빠르다. (물론 package.json에 명확한 version을 정의하고, npm install을 사용해도 된다.)
하지만, npm ci는 기존 node module을 모두 삭제 후 재설치 하기 때문에 이런 점은 단점이 될 수 있다.
'IT 개발자의 창고' 카테고리의 다른 글
| DeepSeek: 중국 AI 스타트업의 도전과 미래 (0) | 2025.02.10 |
|---|---|
| LLM (Large Language Model) 이란? (1) | 2024.04.28 |
| systemctl 서비스 등록 / 생성 / 삭제 (0) | 2023.01.25 |
| Machine Learning 관련 python 라이브러리 (1) | 2022.08.01 |
| Apple M1 Mac OS에 아나콘다 설치하기 (0) | 2022.07.25 |