2 분 소요



안녕하세요! 도도히 입니다!
여러분들은 실무에서 yarn 많이 쓰시나요?
저는 회사에서, 사이드 프로젝트에서도 npm을 계속 다루다보니 따로 yarn을 접할 기회가 없었습니다.
최근 채용공고, 과제를 풀게될때 보이고 있는 yarn! 한번 같이 알아볼까요?




우리는 npm과 yarn을 공부하기 전에,
이 둘을 통용해서 부르는 패키지 매니저가 뭔지 알고 있을까?
모른다면 지금이라도 이해해보자!

📌 패키지 매니저 (Package Manager)

자바스크립트의 패키지 매니저는 Node.js의 실행환경(runtime)에서 수행하며 프로젝트가 의존(dependency)하고 있는 패키지를 효과적으로 설치, 갱신, 삭제를 할 수 있도록 도와주는 도구를 의미한다.

패키지 매니저는 우리가 무조건 쓰고, 자주 사용하고 있던,
npmyarn을 말한다.

자바스크립트에서는 특히나 패키지 매니저가 중요한데,
자바스크립트는 간단한 프로젝트여도 수십,수백개의 다른 패키지를 의존하기 때문이다.

패키지 매니저 관련 파일

  • package.json

프로젝트에서 사용되고 있는 패키지를 관리하는 Json 형태의 파일이다.

  • package-lock.json / yarn.lock

프로젝트 내에서 팀원들 간에 서로 다른 버전을 설치하지 않고,
동일한 버전을 설치하는 것을 보장하도록 명시된 패키지 잠금 파일이다.

  • node-modules

package.json 파일에 명시된 패키지에 따라서 설치 된 패키지 디렉토리이다.

💡 node-modules는 깃헙에 올리지 않는 이유!
package.json에 명시된, 패키지 목록과, lock 파일에 지정된 버전만 있으면,
모든 개발자가 동일한 버전에서 프로젝트를 구성 할 수 있다.
용량이 큰 node_modules는 올리지 않는다.


📌 NPM

Node.js의 표준 패키지 매니저로서 Node.js 런타임을 설치하면 무조건 딸려오는 기본 패키지 매니저

쉽게 말하면, 가장 쉽게 접근 할 수 있는 패키지 매니저이다.
npm 은 yarn의 인기에 밀려서 모든 개발자들이 기피했었다.
하지만 최근엔, yarn의 장점을 모두 흡수해서 가장 대중적인 패키지 매니저로 자리잡았다.

그래서 npm은 가급적이면 최신 버전을 사용하는 것이 좋다.
최소 npm v6 이상의 버전은 써야 만족할만한 경험을 할 수 있다.
(근데 거의 node 업데이트 될때, npm 자동으로 업데이트 됨.)


📌 YARN

Yarn(Yet Another Resource Negotiator)은 Facebook에서 2016년에 만든 자바스크립트 패키지 매니저

npm 보다 훨씬 빠르고 Workspaces와 같은 추가적인 기능까지 제공해서 출시하지마자
자바스크립트 커뮤니티에서 큰 주목을 받았다.

yarn.lock

npm 이랑 다른 것중에 하나가 npm은 package-lock.json
yarn은 yarn.lock 이다.
yarn install 을 할때마다 yarn.lock 이 생성된다.


📌 NPM 과 YARN 명령어

다른 명령어

명령어 npm yarn
dependencies 설치 npm install yarn , yarn install
package 설치 npm install [package] yarn add [package]
dev package 설치 npm install –save-dev [package] yarn add –dev [package]
package 삭제 npm uninstall [package] yarn remove [package]
dev package 삭제 npm uninstall –save-dev [package] yarn remove [package]
업데이트 npm update yarn upgrade
업데이트 package npm update [package] yarn upgrade [package]

같은 명령어

npm yarn
npm init yarn init
npm run yarn run
npm cache clean yarn cache clean



🤷🏻‍♀️ npm vs yarn

패키치 설치 속도

yarn 이 더 빠르다.

npm은 패키지를 한 번에 하나씩 순차적으로 설치합니다.
yarn은 여러 패키지를 동시에 가져오고 설치하도록 최적화 되어있다.

안정성

yarn이 더 좋았지만, 지금은 비슷

npm은 자동으로 패키지에 포함된 다른 패키지 코드를 실행한다.
그래서 보안 시스템에 몇 가지 취약성이 발생하고, 나중에 심각한 문제가 발생할 수 있다.
yarn은 yarn.lock 파일에 있는 파일만을 설치합니다.
보안은 yarn의 핵심 기능 중 하나였다.
하지만, 최근 npm의 업데이트에서 npm의 보안 업데이트도 크게 향상되었습니다.


🎙 결론

서로 영향을 받으면서 꾸준히 발전해왔기 때문에
기능이나 성능 측면에서 거의 동일한 수준이다.

하지만 yarn은 따로 설치해야한다는 단점과,
이쁘고, 아직까지 npm 보단 매력적인 부분이 존재해서
취향에 따라 쓰면 된다!


🤔 추가로…

난 원래 npm 을 썼는데, yarn을 설치하다가
엄청난 에러를 마주하게됐다..
전역으로 설치하다보니, 뭔가 단단히 꼬인 것 같은데
해결을 하게 되면 해결방법이나 주의할 점을 추가로 넣어놓을 예정이다!😞




참고자료1
참고자료2
참고자료3

블로그까지 찾아와주신 분들에게 도움이 되었음 좋겠습니다!🙇‍♀️



댓글남기기