본문 바로가기
개발/React

React_ npm module @types 의 의미

by JunsC 2024. 7. 29.
728x90

보통 무의식적으로 npm i ~  이렇게 필요한 모듈을 설치할때가 많았다.

근데 구글링 해서 찾아보면 npm i --save , npm i --save -dev 이렇게 사용해서 설치하는 경우를 보았는데 뭐가 다른건지 궁금해졌다.

그래서 한번 찾아보았다.

밑의 사이트에서 설명을 잘 해놓은듯 하다.

 

npm init 하여 설치할때 npm 설치를 관리를 해주는 역할이기 때문에 새로운 프로젝트를 시작하더라도 쉽게 다운받았던 모듈들을 npm install 로 받을 수 있는걸 처음 안것 같다.

이렇게 좋은 시스템이였구나 ..!

 

다시한번 공부하는 계기가 되었다.

 

그렇다면 React 의 NPM 에 대해 한번 알아보자 !!!

 

1. React에서 npm 사용법

✅ npm이란?

**npm(Node Package Manager)**은 JavaScript 패키지(라이브러리, 모듈)를 관리하는 도구입니다.
React 프로젝트에서 다양한 라이브러리를 쉽게 설치하고 사용할 수 있습니다.

✅ npm 사용법

(1) npm 설치 확인

터미널에서 npm이 설치되었는지 확인합니다.

npm -v

 

(2) React 프로젝트 생성

React 프로젝트를 생성하려면 다음 명령어를 사용합니다.

npx create-react-app my-app cd my-app npm start

 

📌 설명

  • npx create-react-app my-app → React 프로젝트 생성
  • cd my-app → 프로젝트 폴더로 이동
  • npm start → 개발 서버 실행

(3) npm 패키지 설치

예를 들어, axios(HTTP 요청 라이브러리)를 설치하려면:

npm install axios

 

설치 후 package.json 파일에 자동으로 추가됩니다.

(4) npm 패키지 삭제

npm uninstall axios

(5) npm 패키지 전체 업데이트

npm update

 

(6) 개발 환경에서만 사용할 패키지 설치 (--save-dev)

개발 도구(ex: ESLint)를 설치할 때 사용합니다.

npm install eslint --save-dev
 

 

그렇다면 @Types 의 의미에 대해 알아보도록 하자!!

 

 

2. module @types 의 의미 및 사용법

✅ @types란?

  • @types는 TypeScript에서 사용할 수 있도록 제공되는 타입 정의 파일입니다.
  • JavaScript 라이브러리에는 원래 타입 정보가 없지만, @types를 설치하면 TypeScript에서도 타입을 사용할 수 있습니다.

✅ @types 사용 예제

(1) @types/react 설치

React를 TypeScript에서 사용하려면 @types/react를 설치해야 합니다.

npm install --save-dev @types/react

 

📌 설명

  • --save-dev → 개발용 패키지로 설치
  • React 관련 타입이 자동으로 추가됨

(2) @types/node 설치

Node.js 관련 타입을 사용하려면

npm install --save-dev @types/node

 

예를 들어, Node.js의 fs 모듈을 TypeScript에서 사용하면 자동으로 타입 지원을 받을 수 있습니다.

(3) @types/express 설치 (Express.js 타입 지원)

npm install --save-dev @types/express

 

TypeScript에서 express를 사용할 때 타입 오류를 방지할 수 있습니다.

 

요약해보자면,

3. 정리

개념설명예제

npm JavaScript 패키지 관리자 npm install axios
@types TypeScript에서 라이브러리의 타입 정보를 제공 npm install --save-dev @types/react

npm을 사용하면 React 및 다양한 라이브러리를 쉽게 설치/관리 가능
TypeScript 사용 시, @types 패키지를 설치하면 타입 지원이 가능

🚀 즉, React에서 npm을 활용하면 개발 속도가 빨라지고, TypeScript와 함께 사용하면 타입 안정성이 향상됩니다!

 

 

 

그럼, 내가 겪은 styled-components 에 대한 에러 문제를 한번 해결해보자 !

 

styled-components 에러


Could not find a declaration file for module 'styled-components'.
👉 'styled-components' 모듈에 대한 선언 파일을 찾을 수 없습니다.

 

💊 에러 해결

왜 이런 문제가 발생하나 했더니 TypeScript가 styled-components와 연관된 모듈에 대한 선언 파일을 찾이 못하면 이런 문제가 발생하는 듯하다. 아마 전에 한 번도 TypeScript를 써본 적이 없어서 처음 보는 것이었나보다.

npm i --save-dev @types/styled-components

 

이 부분은 typescript 를 사용하는 프로젝트에 모듈을 설치 @types 을 붙이는 이유는 내부 코드에 대한 type 이 정의되어 있지 않아 해당 라이브러리를 들고 와서 사용할 때 TypeScript에서 type 추론이 불가능하기 때문이다

 

 

그럼 왜 --save-dev 이 부분을 사용하는 이유는 무엇인가 ??

 

--save-dev의 의미

npm i --save-dev @types/styled-components

 

위 명령어에서 **--save-dev**는 해당 패키지를 개발 의존성(Development Dependency)으로 설치하겠다는 의미입니다.

 

 

1. --save-dev vs --save 차이점

옵션의미설치된 패키지 위치

--save-dev 개발 중에만 필요한 패키지 devDependencies (개발 환경 전용)
--save (기본값) 프로덕션(실제 서비스)에서도 필요한 패키지 dependencies (운영 환경 포함)

 

2. 예제: @types/styled-components의 --save-dev 사용 이유

  • styled-components는 React에서 스타일을 적용하는 라이브러리
  • @types/styled-components는 TypeScript에서 사용될 타입 정보 제공
  • 런타임이 아니라 개발 중에만 필요하므로 --save-dev로 설치
npm install styled-components  # 운영 환경에서 사용 (dependencies)
npm install --save-dev @types/styled-components  # 개발 환경에서만 사용 (devDependencies)

 

 

3. package.json에서 확인

설치 후, package.json 파일을 열어보면 다음과 같이 기록됩니다.

 

{
  "dependencies": {
    "styled-components": "^5.3.10"
  },
  "devDependencies": {
    "@types/styled-components": "^5.1.26"
  }
}

 

📌 dependencies → 실제 실행되는 앱에서 사용
📌 devDependencies → 개발 중에만 필요 (빌드 과정에서만 사용)

 

4. --save-dev가 필요한 패키지 종류

📌 개발 중에만 필요한 도구들

  • TypeScript 타입 정의 (@types/react, @types/node, @types/express 등)
  • ESLint, Prettier 같은 코드 스타일 도구
  • Jest, Cypress 같은 테스트 도구
  • Webpack, Babel 같은 번들러

📌 운영 환경에서도 필요한 패키지들

  • React, Express, styled-components 같은 실제 실행되는 라이브러리

5. 결론

🚀 --save-dev는 개발 중에만 필요한 패키지를 설치할 때 사용
🚀 dependencies는 실제 운영 환경에서도 사용되는 패키지
🚀 @types/styled-components는 런타임이 아니라 개발 시 타입 지원을 위해 필요하므로 --save-dev로 설치

 

 

별책부록

 

그래서 npm은 모듈의 추가, 삭제 뿐만아니라 프로젝트의 관리도 해준다.

$npm init

 

을 하면 프로젝트를 관리하기 위한 package.json 파일이 생성된다.

 

그 다음에

$npm install --save [모듈이름]

 

으로 모듈을 설치하면 package.json에는 설치한 모듈과 버전이 기록된다.

dependencies라는 항목이 바로 그녀석인데요. 이 프로젝트에 연관된 모듈들의 목록이 들어있죠.

나중에 다른 곳에 해당 프로젝트를 가져오더라도 모든 모듈을 일일이 설치할 필요없이

$npm install만 입력하면 dependencies 항목을 기반으로 필요한 모듈을 모두 자동으로 설치합니다. 

$npm install --save-dev [모듈이름]

 

으로 설치하는것은 모듈을 설치할 때 package.json 내의 devDependencies 항목에 설치한 모듈과 버전을 넣는 것을 뜻하는데

dev로 시작되는 이름에서 볼 수 있듯이 개발용으로 쓸 경우 devDependencies에 기록한다. 

 

가령 이런 경우겠죠. 제품의 릴리즈나 구동시 꼭 필요한 모듈의 경우 --save 옵션으로 dependencies 항목에 기록하고

제품의 개발시에 테스트를 위해서 필요한 모듈이긴 한데 실제 릴리즈시에는 필요없는 모듈의 경우 --save-dev로 devDependencies 항목에 넣는게 맞겠네요.

자. 마지막으로 이렇게 기록된 모듈 항목들을 설치할 때는 어떻게 쓸까? 

그냥 $npm install 이라 하면 될까?

$npm install이라고 쓰면 dependencies, devDependencies 모든 모듈을 설치한다. 그래서 dependencies만 설치하려면 

$npm install --only=prod[uction]

devDependencies만 설치하려면 

$npm install --only=dev[elopment]

 

로 쓴다.

'개발 > React' 카테고리의 다른 글

React_ reducer 란..  (0) 2025.02.27
React_ Semantic 구조  (2) 2024.08.07
React 프로젝트 생성 feat. Typescript  (0) 2024.06.13
React 무한 스크롤  (0) 2024.06.10
React 새로고침 데이터 저장  (1) 2024.06.09
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."