프론트엔드 로드맵 스터디 #7 #패키지매니저

so ez·2022년 1월 16일
0

🌼 npm

npm이란?

NPM은 Node Package Manager의 약자이다.
자바스크립트 패키지 매니저이고 NodeJS에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할을 하며 설치/관리를 수행할 수 있는 CLI를 제공한다.

패키지 설치

npm i <패키지명> 명령어로 손쉽게 패키지가 설치된다. 설치에는 local install과 global install이 있다. 기본값은 local install이고 local package는 해당 프로젝트 내에서만 사용할 수 있다.
npm i -g <패키지명> 명령어로 global install을 할 수 있다. global package는 모든 프로젝트에서 곹옹으로 사용할 수 있다. global packge install path는 다음과 같다.

macOS: /usr/local/lib/node_modules
Windows: c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules

의존성 관리

npm에서는 package.json 파일로 프로젝트의 정보와 패키지들의 의존성을 관리한다.

package.json 에는 사용하고 있는 패키지들의 명세가 작성되어 있기 때문에 프로젝트를 다른 사람에게 공유하고 싶다면 package.json을 공유하여 개발 환경을 빠르게 구축할 수 있다.
JAVA에서는 Maven의 pom.xml과 비슷한 역할을 한다고 한다.
package.json은 프로젝트 루트에서 npm init -y 명령어로 생성할 수 있다.
package.json에 name 과 version은 생략할 수 없는 기본 값이다.
dependencies에는 프로젝트가 의존하는 패키지들의 이름과 버전을 명시한다.
패키지에서 사용하는 패키지들을 말한다.
devDependencies 에서는 개발 단계에서만 사용하는 패키지를 명시한다.
npm i --save-dev <패키지명> 으로 설치하면 된다.
만약 내가 Git을 통해 프로젝트를 배포받았다면 프로젝트 루트에서 npm i 를 입력해야 프로젝트가 정상적으로 동작한다.
패키지 파일들은 모두 gitignore 당하기 때문에 package.json 에 명시된 dependencies 를 보고 새로 설치해야한다.

🌼 yarn

yarn이란?

yarn은 npm의 동작방식과 비슷하고, 페이스북에서 npm의 단점을 보완하여 성능과 속도를 개선한 라이브러리 관리 도구이다.
어떤 차이점들이 있는지 살펴보자.

npm과 yarn의 차이점

  1. Parallel installation of packages, packages 병렬 설치
    패키지가 설치되면 일련의 작업을 수행한다.
    NPM에서 여러 패키지를 설치할 때, 패키지가 완전히 설치 될 때까지 기다린 후 다른 패키지를 설치한다. 즉, 작업은 패키지별로 순차적으로 실행된다.
    하지만 YARN은 이러한 작업을 병렬로 설치하므로 퍼포먼스와 속도가 증가한다.
    React를 설치했을 때, NPM과 YARN의 속도 차이는 이렇다.
    NPM — 3.572 seconds
    YARN — 1.44 seconds
    YARN이 현저하게 속도가 빠른 것을 알 수 있다.

  2. Automatic Lock file generation, 자동 lock 파일 생성
    NPM과 YARN 모두 패키지에서 프로젝트의 종속성과 버전 번호를 추적한다.
    json 파일 종속성을 설치할 때마다 종속성 버전이 버전 번호 앞에 ^로 시작될 수 있다.
    즉, 다른 시스템에 모든 패키지를 설치하거나 설치할 명령을 수동으로 실행할 때마다 패키지 관리자가 릴리스된 최신 버전을 찾는다.
    최신 버전이 있는 경우 패키지 파일에 언급된 버전이 아닌 자동으로 설치된다.
    패키지를 자동으로 변경하지 않으려면 두 가지 방법이 있다.
    하나는 잠금 파일을 생성하여 한 번에 특정 버전만 설치되고 다른 하나는 패키지 파일에 ^을 제거하는 것이다.
    종속성이 추가되면 YARN은 yarn.lock 파일을 자동으로 추가한다.
    NPM은 npm shrinkwrap 명령어로 lock 파일을 생성한다.
    차이점은 NPM이 기본적으로 lock 파일을 생성하지 않을 때, YARN은 항상 yarn.lock 파일을 생성하고 업데이트한다는 것이다.
    npm-shrinkwrap.json이 존재하는 경우에만 업데이트된다.
    npm v5.0은 lock.json 파일로 명명된 새로운 패키지와 함께 제공되며 npm-lapwrap 시스템을 완전히 폐기했다.
    이것은 설치 과정과 성능을 효율적으로 향상시켰지만, 아직 YARN의 속도 수준에는 도달하지 못 했다.

  3. Security, 보안
    NPM은 다른 패키지를 즉시 포함시킬 수 있는 코드를 자동으로 실행하므로, 보안 시스템에 여러 가지 취약성이 발생한다. 반면에, YARN은 yarn.lock 또는 package.json 파일에 있는 파일만 설치한다. 따라서 YARN이 NPM 패키지보다 보안이 강화된 것으로 간주된다.

profile
여기 프론트엔드 개발자 죽어가요

0개의 댓글