npm 모듈을 많이 개발하는 사람이라면 잘 알수도 있지만 의외로 모르는 사람이 많다.
보통 사용하는건 dependencies
, devDependencies
두가지 일 것이고, Peer dependency의 존재를 모르거나 왜 쓰는지 잘 모르는 사람이 많은데, 제대로 알고 사용할 수 있도록 정리해본다.
tsc/webpack/parcel
등의 transpiler/bundler를 통해 빌드되어 순수한 자바스크립트 코드를 실행할 때 필요한 패키지는 모두 dependencies
에 속해야 한다.npm install
시 표기된 패키지가 node_modules 디렉터리에 없으면 표시된 버전의 패키지를 설치한다.devDependencies
에 해당될 수 있다.npm install
시 표기된 패키지가 node_modules 디렉터리에 없으면 표시된 버전의 패키지를 설치한다.dependencies
와 다르게 가능한 관대하게 표시하는것이 권장된다.^1.0
처럼 마이너 버전까지는 모두 포함할 수 있도록 표기하는게 바람직하다. (semver 참고)npm install
시 표기된 패키지가 node_modules 디렉터리에 없더라도 아무것도 설치하지 않는다.
react
, react-dom
패키지npm i react
직후 리액트를 바로 사용할 수 있으므로 react
패키지에는 peerDependencies가 없을것으로 기대된다.react
의 package.json에는 peerDependencies가 없다.react-dom
은 react
를 기반으로 동작하므로 peerDependencies에 react
가 있을것이다.react-dom
의 peerDependencies에 react
가 있다.