2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

npm의 npm install --save와 --save-dev의 차이는 무엇인가요?

_____
Q: `npm install --save`와 `npm install --save-dev`의 차이는 무엇인가요?

A: 두 명령어는 모두 npm 패키지를 설치하지만, 설치되는 패키지를 `package.json` 파일 내 다른 섹션에 자동으로 기록하는 차이가 있습니다.

- `npm install --save <패키지명>`
- 설명: 패키지를 설치하고, `package.json`의 `dependencies` 섹션에 해당 패키지를 추가합니다.
- 용도: 애플리케이션이 실제 실행 시 필요한 라이브러리나 모듈을 설치할 때 사용합니다. 예를 들어, 프런트엔드 프레임워크, 백엔드 서버 라이브러리 등이 이에 해당합니다.
- 결과:
```json
"dependencies": {
"express": "^4.17.1"
}
```

- `npm install --save-dev <패키지명>`
- 설명: 패키지를 설치하고, `package.json`의 `devDependencies` 섹션에 해당 패키지를 추가합니다.
- 용도: 개발 중에만 필요한 도구(빌드 도구, 테스트 프레임워크, 린트 도구 등)를 설치할 때 사용합니다. 예를 들어, `eslint`, `webpack`, `mocha` 등이 이에 해당합니다.
- 결과:
```json
"devDependencies": {
"eslint": "^7.32.0"
}
```

---

추가 설명:

- 실제 배포 환경(프로덕션)에서는 보통 `devDependencies`에 있는 패키지를 설치하지 않기 때문에, 불필요한 패키지 설치를 방지할 수 있습니다.
- `npm install`을 할 때 옵션 없이 실행하면 기본적으로 `dependencies`와 `devDependencies`가 모두 설치되지만, `npm install --production` 옵션을 쓰면 `devDependencies`는 설치되지 않습니다.
- 참고로 npm 5 버전부터는 단순히 `npm install <패키지명>` 만 실행해도 자동으로 `dependencies`에 추가되므로 `--save` 옵션은 생략해도 됩니다. 하지만 `--save-dev`는 여전히 명시해야 `devDependencies`에 추가됩니다.

---

요약:
- `--save` → 실행 환경에서 필요한 패키지, `dependencies`에 추가
- `--save-dev` → 개발 환경에서만 필요한 패키지, `devDependencies`에 추가
`npm`(Node Package Manager)은 Node.js의 패키지 관리 도구로, JavaScript 애플리케이션의 의존성을 관리하는 데 사용됩니다.

`npm install` 명령어는 패키지를 설치하는 데 사용되며, 이때 `--save`와 `--save-dev` 플래그를 사용하여 설치하는 패키지의 종류를 지정할 수 있습니다.

이 두 플래그의 차이를 이해하는 것은 프로젝트의 의존성을 관리하는 데 매우 중요합니다.

1. `--save` 플래그 `--save` 플래그는 패키지를 설치할 때 해당 패키지를 프로젝트의 정규 의존성 (dependencies)으로 추가합니다.

정규 의존성은 애플리케이션이 실행되는 데 필요한 패키지로, 프로덕션 환경에서 반드시 필요합니다.

예를 들어, 웹 서버를 구축하는 애플리케이션에서 Express.js와 같은 웹 프레임워크를 사용할 경우, 이 패키지는 정규 의존성으로 설치해야 합니다.

```bash npm install express --save ``` 위 명령어를 실행하면 `package.json` 파일의 `dependencies` 섹션에 Express.js가 추가됩니다.

이렇게 하면 다른 개발자들이 이 프로젝트를 클론하거나 설치할 때, `npm install` 명령어를 통해 자동으로 이 패키지가 설치됩니다.



2. `--save-dev` 플래그 `--save-dev` 플래그는 패키지를 설치할 때 해당 패키지를 프로젝트의 개발 의존성 (devDependencies)으로 추가합니다.

개발 의존성은 애플리케이션의 개발 및 테스트 과정에서만 필요한 패키지로, 프로덕션 환경에서는 필요하지 않습니다.

예를 들어, 테스트 프레임워크인 Mocha나 빌드 도구인 Webpack은 개발 의존성으로 설치해야 합니다.

```bash npm install mocha --save-dev ``` 위 명령어를 실행하면 `package.json` 파일의 `devDependencies` 섹션에 Mocha가 추가됩니다.

이 경우, 다른 개발자들이 프로젝트를 설치할 때 `npm install` 명령어를 통해 Mocha가 자동으로 설치되지 않으며, 개발 환경에서만 필요하다는 것을 명시적으로 나타냅니다.

요약 - 정규 의존성 (`--save`) : 애플리케이션이 실행되는 데 필요한 패키지. 프로덕션 환경에서 필수적입니다.

- 개발 의존성 (`--save-dev`) : 애플리케이션의 개발 및 테스트에 필요한 패키지. 프로덕션 환경에서는 필요하지 않습니다.

결론 `npm install --save`와 `npm install --save-dev`의 차이를 이해하는 것은 프로젝트의 의존성을 명확하게 관리하는 데 필수적입니다.

이를 통해 다른 개발자들이 프로젝트를 이해하고, 필요한 패키지를 적절히 설치할 수 있도록 도와줍니다.

올바른 의존성 관리는 프로젝트의 유지보수성과 확장성을 높이는 데 기여합니다.

작성자: 이서진 [비회원] | 작성일자: 1년 전 2024-09-13 09:24:32
조회수: 214 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.