본문 바로가기
Web/Node.JS

[패스트캠퍼스 챌린지 18일차] NodeJS 핵심개념- npm, yarn

by Dev_Mook 2021. 9. 23.

Fast campus Logo

 

Fastcampus_Node.js 수강 목록

 

패스트캠퍼스 작심 30일 챌린지 18일차.

 


오늘은 NodeJS 학습에서 사용하는 Package Manager에 대해 학습하였다.

이 강의에서 소개하는 Package Manager는 NPM과 Yarn으로,

지금까지 자바스크립트를 통한 예제 코드를 작성할 때 필요한 라이브러리를 설치하기 위해서 npm을 사용했던 것을 바로 떠올릴 것이다.

 

자바스크립트 학습 초반에도 NPM이 Package Manager라는 것을 설명하였지만,

이번 학습을 통해 한번 더 NPM이 무엇인지 알아보고, 다른 Package Manager인 Yarn에 대해서도 간략히 알아보았다.

 


 

Package Manager - NPM 개념

 

NPM

 

Node Package Manager를 말하며,

package.json 파일을 미리 생성한 후 npm 명령어를 통해 라이브러리를 설치하게 되면

package.json 파일에 라이브러리 정보가 자동으로 생성된다.

npm을 통해 추가된 라이브러리는 index.js에 정의된 require 함수를 통해 import할 수 있도록 해준다.

 

이때 package-lock.json 파일도 생성되는데 강의를  통해  package.json의 구조와 package-lock.json의 역할이 무엇인지

알아보았다.

 

 

package.json에는 라이브러리의 대략적인 버전이 정의되는데, 추가한 라이브러리의 버전을 보면 '^1.0.0'으로 작성되어 있을 것이다.

여기서 ^ 역할이 대략적인 버전 정보를 알려주는 Syntax라고 이해하면 된다.

그리고 이미 구현한 기능에 영향을 주지않고, 같은 1.x.x 버전 중 가장 최신 버전을 사용하고자 한다면 update 명령을 통해 버전을 업그레이드 할 수 있다.

$ npm update {library-name}

만약 1.10.0 버전이 가장 최신이라면 package.json에 버전이 '^1.10.0'으로 변경된 것을 볼 수 있을 것이다.

 

package-lock.json 파일은 실제로 설치된 라이브러리의 버전과 라이브러리 파일의 실제 정보가 작성되어 있는 파일로

협업을 할 경우 Git을 통해 Repository에 이 파일을 배포해야한다.

버전의 차이가 조금이라도 있을 경우 수정된 기능으로 인해 기존 기능이 정상적으로 동작하지 않을 가능성이 있기 때문이다.

 

그리고 하나 더!

package.json에 devDepencencies는 개발하는 환경에서만 필요한 Depencency들을 정의하는 공간!

scripts 영역은 사용자 정의 스크립트를 작성하는 공간으로,

$ npm run {script name}

위 명령어를 통해 실행할 수 있다.

참고로 npm run은 node_modules/.bin 안에 스크립트가 있는지 먼저 확인한 후 실행한다는 것을 알아두자!

 

추가적으로 NPM에 대해 학습하고자 할 경우 http://npmjs.com 사이트의 Document를 참고하면 도움이 많이 될 것 같다.

 


 

Package Manager - Yarn 개념

 

다음으로 알아볼 Package Manager는 Yarn!

Yarn은 npm과 거의 비슷한 Package Manager지만, 효율적인 Caching 기능 덕분에 npm보다 조금 더 빠르다는 장점이 있다.

(그래서인지 다른 개발자들 보면 Yarn을 더 많이 사용하는 것 같다... 그냥 구글에서 알려줘서 사용하는건가...?)

 

Yarn은 아래 명령어를 통해 쉽게 설치할 수 있다.

 $ npm install -g yarn

여기서 -g 옵션은 global이라는 의미.

 

Yarn이 설치되면 이제 npm과 같이 라이브러리를 추가할 수 있는데 npm 명령어와 yarn의 명령어가 어떤 차이가 있는지 아래 코드를 통해 알아보자.

 

$ npm install decamelize
$ yarn add decamelize

$ npm install --save-dev eslint
$ yarn -D eslint
$ yarn --dev eslint

뭐... 엄청 차이나는 것은 아니지만 명령어가 조금 다르니 알아두자.

 

yarn을 통해 라이브러리를 추가하게 되면 npm에서 package-lock.json 파일이 생성된 것과 같이 yarn.lock 파일이 생성된다.

yarn.lock 파일도 package-lock.json과 같이 추가된 라이브러리 정보가 작성되어 있으므로 별도의 설명은 하지않겠다.

 

그리고 npm에서 npm run 명령어를 통해 사용자 정의 스크립트를 실행할 수 있었던 것처럼

yarn도 yarn {스크립트 이름} 명령어를 통해 동일한 기능을 수행할 수 있다.

 

다만 npm과의 차이점은

npm의 경우 node_modules/.bin을 바로 참조할 수 없기 때문에 명시적으로 경로를 입력해야하지만

yarn은 바로 참조할 수 있오 node_modules/.bin 경로를 명시하지 않아도 yarn user-script와 같이 명령어를 실행하는 것만으로도 사용자 정의 스크립트를 실행할 수 있다.

 


[오늘의 학습통계]

패스트캠퍼스 작심 30일 챌린지 18일차 학습통계


- 패스트캠퍼스 URL : https://bit.ly/37BpXiC

* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.