node란?
출처: https://namu.wiki/w/Node.js?from=Nodejs
나무위키에 의하면 “크롬 V8에서 비동기 이벤트 처리 라이브러리인 libuv를 결합한 오픈소스 자바스크립트 엔진” 이라 합니다. 간단하게 말해서 자바스크립트 돌려주는 런타임 엔진이라 생각하시면 편합니다. 아~ 얘가 자바스크립트 돌려주는 애구나~! 근데 얘를 왜 알아야 되는데?
위 질문은 아래 패키지 매니저들이 해결해 줄 거에요.✌
npm, yarn, pnpm이란?
npm 이란 node package manager의 약자입니다. 패키지를 관리하는 애에요. yarn, pnpm도 마찬가지로 패키지를 관리해주는 애들입니다. 어려울 건 하나도 없어요!
npm
npm은 처음으로 등장한 노드 패키지 매니저입니다. 처음 등장한 만큼 성능에 대한 고찰이 많이 이루어지지 않은 상태로 등장했으므로 초기에 yarn, pnpm에 비해 성능이 많이 떨어졌지만 요즘엔 많이 개선되었습니다. npm start, npm run dev 등의 명령어로 node 서버를 빌드, 실행 등을 할 수 있습니다. package.json의 scripts 프로퍼티에 명령어를 추가하면 npm run “명령어 이름” 의 형태로 명령어를 실행시킬 수 있습니다.
yarn
Facebook에서 2016년 8월에 공개한 패키지 및 배포 관리자이며 초창기에는 npm을 압도하는 성능과 다양한 기능을 제공하여 인기를 끌었는데, 2020년 현재는 npm이 개선을 거듭하여 설치 및 링크 퍼포먼스 측면에서 npm과 yarn은 큰 차이가 없다고 합니다. 다만 yarn의 패키지 링크 알고리즘 상 npm과는 달리 모든 환경에서 동일한 의존성을 보장한다고 합니다.
제가 yarn을 쓰는 가장 큰 이유는 npm은 scripts의 명령어를 실행할 때 npm run “명령어 이름”으로 해야하지만 yarn은 yarn “명령어 이름”으로 하면 됩니다. run 자주 치다 보면 귀찮아요.. ㅠ
pnpm
빠른 성능과 디스크 절약을 처음부터 끝까지 강조하고 있는 패키지 관리자입니다. 모듈형 라이브러리 및 프레임워크에서 적극적으로 사용하고 있는 추세이며, yarn 처럼 npm 을 pnpm 으로 마이그레이션이 쉽게 지원됩니다. pnpm의 장점이자 단점이 될 수 있는 양날의 검이 바로 불필요하거나 중복된 패키지 미설치를 통한 디스크 용량 절약인데, 라이브러리나 프레임워크처럼 배포형태를 염두에 둔다면 좋은 선택이지만, 프로젝트를 생각한다면, 종속성이 사용하는 모듈을 프로젝트에서 기본적으로 사용할 수 없습니다. 이는 npm 에서는 있을 수 없는 일이며, yarn 의 경우 2 버전부터 나타날 수 있는 특징입니다.
이를 해결하려면 종속성을 직접 명시하여 설치하는 게 가장 최선이지만, 일부 모듈의 경우 모듈의 종속성을 설치 없이 사용하는 경우가 있어서 이로 인한 라이브러리 누락 오류로 인해 빌드가 실패하는 경우가 있습니다.. 이런 이슈에 대해서는 모듈 개발자가 해결해주지 않는 이상 해결이 불가능하여, pnpm 및 yarn 2 이상 대신 npm 이나 yarn 을 이용해야 하는 경우도 있습니다.
위 문제 때문에 한국에선 pnpm이나 yarn2를 잘 사용하지 않아요. 나중에 stable 버전이 나온다면 한 번 쯤 사용해봅시다.
결론
가장 호환성이 좋고 안정적이며 따로 설치할 필요가 없고 도커와 호환성이 좋은 npm을 사용하는 것이 현재 최적의 선택이라 생각합니다.
'Backend > Nest.js' 카테고리의 다른 글
package.json (0) | 2023.02.02 |
---|---|
[node.js] Openssl로 https 인증서 만들어서 express에 적용하기 (0) | 2021.03.11 |
node.js에서 프로젝트 패키지 다운로드 받기 (0) | 2020.05.09 |