티스토리 뷰

npm은 자바스크립트 라이브러리 저장소(npm레지스트리)와, 프로젝트가 의존하고 있는 라이브러리들의 버전을 지정하는 방법(package.json)을 제공한다.

 

dependencies

현재 프로젝트를 실행하는 데(런타임시) 필수적인 라이브러리들이 포함

프로젝트를 npm에 공개하여 다른 사용자가 해당 프로젝트를 설치하면 dependencies에 들어 있는 라이브러리도 함께 설치됨(전이 의존성)

$ npm install react

 

devDependencies

개발, 테스트 시엔 필요하지만 런타임에는 필요 없는 라이브러리들이 포함 (ex. 테스트프레임워크, prettier, eslint)

프로젝트를 npm에 공개하여 다른 사용자가 해당 프로젝트를 설치하면 devDependencies에 포함된 라이브러리들은 제외됨

타입스크립트는 개발 도구일 뿐 다입 정보는 런타임에 존재하지 않기 때문에 타입스크립트와 관련된 라이브러리는 이곳에 속함

DefinitelyTyped의 타입 정의들은 npm 레지스트리의 @types 스코프에 공개되기에 원본 라이브러리 자체가 dependencies에 있더라도 @types 의존성은 devDependencies에 있어야함 (런타입에 @types가 필요한 경우라면 별도의 작업 필요)

$ npm install --save-dev @types/react

{
	"devDependencies": {
    	"@types/react": "^16.8.19",
        "typescript": "^3.5.3"
	},
    "dependencies": {
    	"react": "^16.8.6"
	}
}

 

peerDependencies

런타임에 필요하긴 하지만, 의존성을 직접 관리하지 않는 라이브러리들이 포함 (ex. 플러그인)

 

 

 

실제 라이브러리와 타입 정보의 버전이 별도로 관리되는 방식의 라이브러리를 사용한다면 라이브러리와 타입 선언을 함께 업데이트 해주어야한다.

 

 

 

출처: effective typescript

댓글
최근에 올라온 글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30