Yarn
yarn 1 : npm 보다 조금 빠른 정도
yarn 2 : yarn-berry 라고 부르는...
Yarn berry 시작하기
corepack enable
yarn init -2
yarn을 이용한 패키지 관리 예시
터미널에 색을 표시하는 chalk 패키지를 설치해 실행시킨다.
main.js 에 chalk를 사용한 간단한 코드를 적어준다. 이때, import 문으로 라이브러리를 불러온다(ESM)
import chalk from "chalk"
console.log(chalk.blue("안녕하세요!"));
package.json
{
"name": "test-yarn",
"packageManager": "yarn@4.1.0",
"dependencies": {
"chalk": "^5.3.0"
}
}
기본 package.json 파일에서는 "module" 필드가 명시되어 있지 않다.
따라서 이 프로젝트는 ES 모듈 시스템을 사용하지 않고 CommonJS 모듈 시스템을 기본으로 사용할 것
yarn : package.json 옵션
yarn 에는 npm 만큼 많은 라이브러리가 등록되어있지 않거나, ESM을 지원하는 등의 옵션이 존재한다.
위의 기본 package.json에서 아래와 같은 수정사항이 발생할 수 있다.
<예시>
1. 수정된 chalk 의 깃허브 주소를 적어준다.
(기존 chalk는 * imports의 속성이 포함되어있는데 이 설정은 버전을 제대로 정의하기 어려워 yarn berry 내에서 지원하지 않는다.
이를 해결하기 위해chalk 의 package.json에서 imports 를 삭제하고 이를 포함하는 소스도 수정하면 해결 가능하다.)
* imports : 다른 패키지의 속성을 포함시키는 설정 )
2. "type" : "module" 속성을 추가해준다.
package.json에 { "type": "module" }을 추가해주면 ESM환경으로 돌아가게 된다.
다만 type을 적지 않을 때, 기본값은 commonJS로 동작한다.
{
"name": "test-yarn",
"packageManager": "yarn@4.1.0",
"dependencies": {
"chalk": "https://github.com/wapj/chalk"
},
"type": "module"
}
이후 yarn node main.js 를 명령을 실행
Zero-Install
의존성을 버전 관리에 포함하는 것
Yarn Berry의 Zero-Install 기능은 .yarn/cache
에 저장된 패키지를 프로젝트와 함께 버전 관리 시스템에 포함시킨다.
이로 인해 다른 개발자나 CI/CD 시스템에서 별도의 패키지 설치 과정 없이도 프로젝트를 바로 사용할 수 있게 된다.
* 특이사항 ~
➜ .yarn git:(main) ✗ ls -a
. .. install-state.gz
.yarn 디렉토리 안에는 cache라는 경로가 생성되고, 그 안에 zip확장자를 가진 압축파일들이 생성된다.
=> cache 디렉토리는 생성되지 않았다. 대신 install-state라는 이름의 .gz파일만 생성이 되었는데 이는 최적화를 위한 문서이며 commit 할 필요가 없다 라고 공식문서에 나와있다.
ref: https://toss.tech/article/node-modules-and-yarn-berry
'Web > JavaScript' 카테고리의 다른 글
[Node.js] express 프로젝트에 핸들바 템플릿 엔진 적용하기 (1) | 2024.03.27 |
---|---|
[Node.js] npm uninstall 실행 이후 package.json 업데이트 (0) | 2024.03.25 |
[Node.js] npm (Node package manager) : npm에는 왜 package.json 과 package-lock.json이 존재할까? (0) | 2024.03.05 |
[Node.js] Node.js는 논블로킹 비동기 방식으로 I/O를 처리한다 (0) | 2024.02.22 |
[Node.js] 런타임 / V8 /이벤트 기반 아키텍처/ K6 (0) | 2024.02.22 |