# yarn-berry

57개의 포스트

리액트 빌드(React Build)

build docker image ( React + TypeScript + Vite + Yarn-Berry + nginx ) nginx 기반 정적 웹페이지 빌드 프로젝트 루트 디렉토리에 "Dockerfile" 파일 생성 도커 빌드 >docker build -t coconote-frontend . 도커 실행 >docker run -p 8080:80 coconote-frontend localhost:8080 접속해서 nginx 기반으로 정적 웹페이지가 잘 렌더링 되는지 확인. yarn build > yarn build 오류 해결 `#13 15.11 ➤ YN0009: │ utf-8-validate@npm:5.0.10 couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-20cd1bf2/build.l

2023년 9월 17일
·
0개의 댓글
·
post-thumbnail

Nest.js에 Yarn Berry + Zero Install 적용하기

Yarn Berry를 도입한 이유 고난과 역경 끝에 Yarn PnP + Zero Install 조합을 Nest.js에 적용하는데 성공하였기에 기록으로 남겨둔다. Yarn을 모르는 사람들을 위해 간단하게 설명하자면 Yarn은 NPM과 같은 패키지 관리자이다. NPM은 노드 패키지 관리자의 약자이며 터미널에서 노드 서버 구동에 필요한 패키지를 관리할 수 있게 한다. 일반적으로 node_modules 라는 1GB 가까이 되는 거대한 패키지 폴더를 만든다. NPM과 유사한 구조체를 갖는 것은 Yarn Classic이며 NPM보다는 빠르지만 동일한 구조를 가지고 있다. 이러한 상황에서 획기적인 설치 속도와 압도적인 용량 절감 효과를 가져오는 패키지 관리자가 등장했는데 바로 Yarn Berry였다. 필자는 오래 전부터 이것을 회사 프로젝트에 적용하려고 노력했지만 빈번히 실패했었다. 머신의 사양이 그리 좋지 않기 때문에 빌드 속도를 개선하려면 빌드의 주체가 Github Action이

2023년 9월 14일
·
0개의 댓글
·
post-thumbnail

Yarn Berry 도입기

Yarn Berry 도입 현재 CI/CD 의 총 소요 시간은 약 2분 26초 전후 그 중에서 빌드에 소요되는 시간은 약 22.27 초이다. 그럼 나머지 시간은 어디서 소요되는 걸까? CI/CD 과정을 보니 npm install 명령에 소요되고 있는 것을 확인했고, 이 부분의 시간을 최대한 줄일 수 있다면, 전체적인 CI/CD 소요 시간을 1분 이내로 줄일 수 있을 것으로 기대했다. 이래저래 찾아본 결과 토스의 **[node_modules로부터 우리를 구원해 줄 Y

2023년 8월 24일
·
0개의 댓글
·
post-thumbnail

[pnpm] "The inferred type of X cannot be named without a reference to Y" 에러 해결법 총정리

pnpm 혹은 yarn berry으로 모노레포 프로젝트를 사용하다보면 심심치 않게 등장하는 에러다. 원인 원인은 간단하다, 의존성을 hoisting하여 평면적으로 설치하여 관리하는 npm이나 yarn과는 다르게, pnpm은 간접적인 의존성, 즉 X라는 의존성을 설치했을 때 X가 의존하는 Y들은 .pnpm이라는 경로 아래에 따로 설치하고 심볼링크를 통해 접근한다. 이 때문에 간혹 Y에 있는 타입을 사용하려할 때 타입스크립트에서 경로를 찾아가지 못하는 문제가 발생하곤한다. 그리고 이 문제는 tsconfig에서 "declaration": true 설정을 하는 경우에만 발생한다. 단순히 실행코드에서는 타입스크립트의 컴파일러가 함수의 매개변수나 리턴값 등을 찾아가면서 타입을 추론해주지만,

2023년 8월 21일
·
0개의 댓글
·

Yarn berry + Vite + React + Typescript + Recoil 환경 설정

Vite + Yarn berry + React + TypeScript 적용 1. vite 설치 2. 템플릿 생성 3. 폴더로 이동해서 yarn-berry로 버전 변경 4. .yarnrc.yml 파일에 nodeLinker 추가 5. yarn install 6. gitignore 추가 7. ZipFS VSCode 확장 프로그램 설치(Zip 파일을 이용하여 의존성 관리를 진행하기 때문) 8. sdk의 설정을 생성 yarn dlx @yarnpkg/sdks vscode는 Yarn을 사용하여 @yarnpkg/sdks라는 패키지를 다운로드하고, 해당 패키지에 포함된 vscode라는 스크립트

2023년 8월 9일
·
1개의 댓글
·
post-thumbnail

Front-end 도구 및 라이브러리 정리

스타일링 라이브러리 Emotion Emotion은 JavaScript를 사용하여 CSS 스타일을 관리하는 라이브러리로, React와 다른 프레임워크에서 사용할 수 있습니다. Emotion은 CSS-in-JS 스타일링 방식을 채택하여, 컴포넌트와 함께 스타일을 선언하고 적용할 수 있습니다. CSS-in-JS 방식 중 하나인 "Styled Components"와 유사한 기능을 제공합니다. CSS-in-JS: Emotion은 JavaScript 코드 안에서 CSS 스타일을 작성할 수 있도록 해주는 방식으로, 스타일과 컴포넌트를 함께 관리할 수 있습니다. 퍼포먼스: Emotion은 빠른 런타임 성능을 제공하며, 스타일을 최적화하여 불필요한 렌더링을 방지합니다. 스타일 재사용: Emotion은 스타일을 JavaScript 객체로 추상화하여 재사용성을 높여줍니다. Framer-motion Framer Motion은 모션 그래픽 및 애니메이션을 구현하기 위한

2023년 7월 23일
·
0개의 댓글
·
post-thumbnail

[F-Lab 모각코 챌린지 52일차] Package Manager 패키지 매니저, (js)

패키지 매니저를 쓰고 있음에도 무슨 일을 하는 건지 모르고 있었다. js 프로젝트 컨셉도 정하고 들어가게되면 어떤 패키지 매니저가 좋을지에 대해 고려하면서 깊게 공부해보려한다. Package Manager 패키지 매니저 (패키지 관리 시스템) 컴퓨터의 운영 체제를 위해 일정한 방식으로 컴퓨터 프로그램의 설치, 업그레이드, 구성, 제거 과정을 자동화하는 소프트웨어 도구들의 모임이다. 패키지 관리자는 아카이브 파일로된 소프트웨어 배포판과 데이터인 패키지(package)를 다룬다. 패키지 설치, 업데이트, 삭제 의존성 dependency 관리 패키지 압축 해제 패키지 검색 환경 설정 보안 관리 : 신뢰

2023년 7월 22일
·
6개의 댓글
·

Yarn-berry 파헤치기

yarn? npm? yarn-berry의 도입 이전에 yarn은 뭐고, npm과의 차이점은 뭔지 탐색하는 시간을 가졌습니다. npm : node.js의 기본적인 package manager로, 쉽고 간편하게 모듈을 관리할 수 있다는 장점으로 수많은 사용자가 있습니다. 하지만.. 일괄적이지 않은 패키지 버전 고정되지 않은 설치 순서 이게 문제가 되는 이유는, 어떤 의존성에 따라 어떤 패키지를 추가했는지 여부와 관계없이 설치가 진행되기 때문에 각자 다른 환경이 설치될 위험 순차적인 패키지 설치 한 번에 하나의 패키지의 설치만 발생하기 때문에 소요되는 시간이 길어질 수 있음 와 같은 문제가 존재했습니다. yarn : 위와 같은 npm의 문제를 해결하면서 장점을 가지

2023년 7월 13일
·
0개의 댓글
·
post-thumbnail

패키지 매니저들에 대해서 비교 분석하기

패키지 매니저란? 패키지 매니저(Package Manager)는 프로그램에서 사용하는 라이브러리나 모듈 등을 관리하는 도구이다. 패키지 매니저를 사용하면 라이브러리나 모듈을 쉽게 설치하고 업데이트할 수 있다. 또한 패키지 매니저를 사용하면 프로그램에서 사용하는 라이브러리나 모듈의 버전을 일관되게 유지할 수 있게 된다. 종류로는 npm, pnpm, yarn, yarn berry 등이 있다. - npm >npm은 Node.js의 공식 패키지 매니저로 가장 많이 사용되고 있다. npm은 빠르고 안정적이며 다양한 기능을 제공한다. 하지만 npm은 의존성 트리를 재귀적으로 설치하므로 설치 시간이 오래 걸릴 수 있다. 장점 Node.js와 함께 설치되어 사용하기 쉽다. 많은

2023년 6월 25일
·
0개의 댓글
·

패키지 매니저 톺아보기

회사에서 진행중인 프로젝트 외에 다른 프로젝트를 인수인계 받으면서 작은 문제를 겪었다. 패키지 매니저와 관련된 문제인데 정확히 작동 원리나 배경 지식이 없으니 원인을 찾는 것부터 시간을 엄청 썼다. 결론은 package-lock.json파일이 없어서 패키지 버전 오류로 확인됐다. 이 오류를 계기로 관련 지식을 기록해놔야겠다는 필요성이 들어서 정리해보려고한다. npm, yarn의 설치 방식 보통 일반적으로 사용하는 npm, yarn는 여러 방식을 통해 패키지 의존성을 관리한다. package.json에 명시된 파일을 설치하는 과정에서 lock 파일을 참조해 정확한 버전을 설치한다. 패키지의 의존성은 트리 구조로 나타낸다. 루트 패키지는 package.json에 명시된 패키지를 기준으로 하위에 의존하는 다른 패키지가 나열되는 방식이다. 패키지가 의존하는 다른 패키지의 버전 충돌이 발생하면, 이를 해결하기 위해 적절한 버전을 선택해서 설치한다. > 예를 들어,

2023년 6월 15일
·
0개의 댓글
·
post-thumbnail

PnP 그리고 Yarn berry가 뭐길래 쓰는지 이제 알아보자

회사에서 신규 프로젝트를 시작할때 사용할 보일러플레이트를 만들다가 적용하게된 yarn berry를 적용하면서 알게된 내용을 정리해본다. yarn berry 적용하게된 이유 기존에 사용하던 yarn classic에서 monorepo를 적용하고 싶어 리서치하다가 yarn berry에 있는 workspace를 사용해 구현한 블로그를 보게 되어 따라 적용하다가 체택하게되었습니다. 거창한 이유는 아님... 나중에 알고 보니 yarn classic에도 workspace가 지원되서 monorepo사용에 문제가 없는것을 알게되었을때는 좀 허탈했지만 그래도 공부했다는 마음으로 지내고 있음 그러면 yarn berry 쓰면 뭐가 좋은데? 크게 좋은점은 2가지인거 같다 PnP Zero install 그럼 좋은점이 각각 정확히 뭔데? PnP(Plug'n'Play) yarn 2버전부터 지원되는 기능으로 해당 기능을 사용하면 의존성 라이브러리를 .yarn폴더내 c

2023년 6월 13일
·
0개의 댓글
·
post-thumbnail

node_modules의 문제점과 yarn berry의 특징

yarn berry에 관해 글을 쓰려고한다. 기존의 yarn (v1 or yarn classic)이라고 하고, yarn v2부터 yarn berry라고 하는데, 작동하는 방법 자체가 많이 바뀌어서 효율을 극대화하였다. 그래서 오늘은 yarn berry의 특징과 node_modules을 사용하는 것에 대한 문제점을 다뤄보고자 한다. node_modules의 문제점 npm 은 그간 Node 생태계를 위해 많은 일을 해왔지만 가장 첫 번째로 꼽힐 용량 문제를 제외하고서라도 많은 문제를 안고 있었다. 아래는 yarn 공식 문서에 언급되어 있는 내용이다. 1) 모듈 탐색 과정의 비효율 node_modules 구조 하에서 모듈을 검색하는 방식은 기본적으로 **디스크 I/O

2023년 6월 8일
·
0개의 댓글
·
post-thumbnail

(Node.js) Yarn berry Project Setting

이전 포스팅을 통해 npm, yarn의 차이점과 Yarn Berry가 등장하게 된 배경을 소개했습니다. 이어서 본 포스팅에서는 Yarn berry 환경으로 React, TypeScript 프로젝트를 세팅하는 방법에 대해서 소개하겠습니다. 1. Create React App + Typescript React 프로젝트의 복잡한 세팅 과정을 생략하고자 Create React App을 활용하여 프로젝트를 생성합니다. 2. node_modules, yarn.lock 파일 삭제 CRA(Create React App)를 통해 자동으로 생성된 node_modules, yarn.lock 파일을 삭제합니다.

2023년 6월 2일
·
0개의 댓글
·
post-thumbnail

(Node.js) npm, yarn and yarn berry

npm_과 yarn은 _node로 프로젝트를 진행할 때 대중적으로 많이 사용되는 패키지 관리 툴로 그 중 yarn은 기존의 npm이 가지고 있던 문제점들을 해결하기 위해 등장했습니다. 두 패키지 매니저 모두 현재 수 많은 프로젝트에서 사용중인 오픈소스 프로젝트입니다. 본 포스팅에서는 npm과 yarn이 어떤 문제들을 해결하였으며, 이후 두 패키지 매니저의 발전 과정과 함께 yarn berry에 대해서 소개하겠습니다. Problem with npm yarn이 등장하기 전, 과거의 npm에는 다음과 같은 여러 문제가 있었습니다.

2023년 5월 31일
·
0개의 댓글
·
post-thumbnail

프로젝트 & 테스트코드(cypress & jest) 절대 경로 설정하기

✅ 개발 환경 Yarn Berry(yarn2) React TypeScript Jest Cypress > 폴더 구조 1. 프로젝트 절대 경로 설정하기 "baseUrl": "src" 추가 ts.config.json에서 "baseUrl": "src" 추가한다. baseUrl은 상대 경로를 계산할 기본 디렉토리를 지정한다. 여기서는 "src"를 기본 디렉토리로 설정한다. 2. 테스트 코드 절대 경로 설정하기 2-1. jest 절대 경로 작성 2-1-1. jest.config.js 에 아래 내용 추가 실행 에러 jest-config tried to access ts-node 이 오류는 jest-config 모듈이 ts-node 모듈에 대한 peer depen

2023년 5월 17일
·
0개의 댓글
·

20230515 - JSLanguageService

뭐부터가 문제였을까... toss/slash 라이브러리를 공부하던 중 get-set 메서드의 기능을 추가할 수 있을 것 같아서 fork 후 작업을 시작했는데, 몇 분 지나지 않아서 맥북이 메모리 빈 자리가 없다며 울기 시작했다. 사용해보지 않은 yarn berry 설정이 문제인가, lerna를 설치안해서 그런건가? 온갖 시도를 해봤지만, javascript language service는 계속해서 높은 CPU/RAM 사용량을 보여주고 있었다. 결국 솔루션을 찾지 못하고, 작업 중에는 typescript, esLint 등을 꺼두기로

2023년 5월 15일
·
0개의 댓글
·
post-thumbnail

Yarn berry에서 React + TypeScript + Jest + Cypress 세팅하기

React 프로젝트 Yarn Berry 설정 1. React 프로젝트 생성 1-1. npx로 설치 create-react-app@latest를 한 이유 npx create-react-app을 했을 때, global install을 지원하지 않는다고 하는 에러(참조)에 대응하기 위함입니다. npx는 npm기반으로 돌아가는 명령어기 때문에, 기존의 node_modules기반의 모듈 관리를 하게 됩니다. yarn berry기반이 아니라서 이렇게 생성한 프로젝트를 yarn berry기반으로 바꿔 주는 과정이 필요합니다. 2번을 참고해주세요. 1-2. yarn 으로 설치 2. 기존의 의존성 관리 삭제 2-1. npx로 설치한

2023년 5월 11일
·
0개의 댓글
·
post-thumbnail

npm vs yarn vs yarn berry

npm 1. 일관적이지 않은 패키지 버전 노드 모듈들은 기본적으로 시멘틱 버저닝이라는 기법을 사용하여 사용하는 모듈들의 버전을 나타낼 것을 권장하고 있습니다. 시멘틱 버저닝이란 간단히 말해 1.2.3 처럼 버전을 세 가지 숫자가 들어갈 수 있는 자리로 구분하고, 각각의 자리에 현재 버전이 이전 버전과 어떤 관계가 있는지 암시하도록 하는 방법입니다. 예를 들어 첫 번째 자리에 들어가는 숫자가 다르면, 두 버전은 이전 버전과 호환되지 않는 완전히 새로운, 메이저 버전이라는 의미입니다. 위 사진을 보면 캐럿 기호(^)가 들어가 있는데, 이는 가장 앞 숫자인 메이저 버전을 제외한 두 자리 (마이너, 패치) 버전까지는 변경을 허용할 수 있다는 의미입니다. 현재 사진 속 바벨 코어의 버전이

2023년 5월 11일
·
1개의 댓글
·

Yarn Berry 특징 정리

Yarn Berry란? yarn berry는 npm과 함께 js 패키지매니저 쌍두마차인 yarn의 버전 2이다. (yarn v1은 yarn classic이라고 많이들 부르는것 같다.) 기존 npm과 yarn v1이 가지고 있는 문제들에 해결책을 제시한다. npm,yarn1의 문제점 ⚽️ 의존성 트리가 깊어지는 경우 nodemodules폴더에서 모듈을 불러올때, require() 함수를 호출해 모듈을 찾을때까지 상위 nodemodules 디렉터리를 순회하게 된다. 매 depth 마다 느린 연산이 반복된다. (디스크가 readdir,stat 같은 느린 I/O동작을 하게 된다.) 따라서 프로젝트의 의존성 트리가 깊어지면, 패키지 다운로드 및 빌드 시간이 늘어난다. 의존성이 잘 설치되어

2023년 5월 4일
·
0개의 댓글
·
post-thumbnail

[React]yarn berry, vite, React TS 환경에서 라이브러리 포함한 모노 레포 만들기

개요 레퍼런스 정말 감사합니다. https://velog.io/@projaguar/Yarn-3-MonoRepo-with-Typescript-Next.js-Nest-React-Native 특히 이 글을 많이 참조했다. https://techblog.woowahan.com/7976/ https://github.com/adiun/vite-monorepo/tree/main 목적 출처 [https://github.com/Dodecane/klaykit/tree/main/packages](https://github.com/Dodecane/

2023년 4월 29일
·
0개의 댓글
·