# lerna

13개의 포스트
post-thumbnail

Lerna & Yarn Workspace

Yarn Workspace NodeJS에서 MonoRepo를 관리하는 대표적인 방법으로 Lerna & Yarn Workspace Lerna는 각 패키지들을 배포하고 버전 관리하는 역할을 한다. yarn은 각 패키지 간의 의존성 관리 역할을 한다. lerna 로도 의존성 관리를 할 수 있지만, 패키지 관리 시 이슈가 존재해서 각 도구가 서로 잘하는 역할만 하도록 설정한다. 디렉터리 구성 lerna.json 프로젝트 lerna 구성 package.json 하위 프로젝트들이 공통으로 사용할 dependencies 선언 프로젝트 전체를 대상으로 하는 script packages 하위 프로젝트들이 담길 상위 디렉터리 수동/lerna create 패키지명 으로 자동 생성 모두 가능 패키지 추가 삭제 project1에 패키지를 추가하고 싶은 경우 : yarn workspace project1 add [

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

Next.js + typescript + Lerna + yarn workspace로 FrontEnd 모노레포를 만들어 보자

이미지 출처 새로운 프로젝트를 시작하기 앞서서 프로젝트의 구조를 어떻게 짤지 고민을 많이 하게 됐다. 3가지의 프로젝트를 진행하는데 비슷한 ui와 같은 api를 쓰는 것들이 많았고 자주쓰는 hook 들과 style들을 각각의 프로젝트마다 붙여넣는 것은 생각보다 비효율적인 것 같았다. 그래서 모노레포라는 것을 들어는 봤지만 깊이 알지는 못해서 자료를 찾아봤다. lerna yarn workspace nx npm workspace rush 등등 모노레포를 위한것들이 꽤나 많이 있었다. 그중에서 lerna와 yarn workspace를 같이 사용해서 모노레포를 구성하였다. yarn 설치 Lerna 설치 먼저 이렇게 yarn과 lerna를 설치해 주었다. 그리고 루트에 있는 packag

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

20230515 - JSLanguageService

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

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

JavaScript monorepo tools

npm workspaces - https://docs.npmjs.com/cli/v7/using-npm/workspaces yarn workspaces - https://classic.yarnpkg.com/lang/en/docs/workspaces/ lerna - https://lerna.js.org/ turborepo - https://turbo.build/ 참고) https://d2.naver.com/helloworld/7553804 https://engineering.linecorp.com/ko/blog/monorepo-with-turborepo

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

Monorepo(모노레포) 프로젝트 구성하기 - Lerna, yarn workspace

Monorepo(모노레포)란? Monolithic Repositories의 약자로, 여러 개의 프로젝트를 하나의 Repository에서 구성하는 것을 말한다. 보통은 하나의 Repository에 하나의 프로젝트를 생성하는데, 이런 구성은 Polyrepo 혹은 Multirepo라고 부른다. Monorepo 사용 이유 여러 프로젝트를 하나의 Repository로 관리할 수 있다. Monorepo 내 여러 패키지에서 사용하는 공통 로직이 있을 경우 이 로직을 하나의 패키지로 분리하여 필요한 패키지에서 가져다 사용할 수 있다. 중첩되는 모듈은 하나만 설치해서 사용할 수 있다. Npm 방식만으로 프로젝트를 관리한다면, 전역 설치를 위해서 npm install -g 등의 명령어를 사용해야 한다. 복잡한 프로젝트라면 중복되는 모듈을 찾기 어렵다. Monorepo 단점 특정 패키지가 특정 버전의 모듈을 사용하는 경우 다른 버전

2022년 12월 29일
·
0개의 댓글
·
post-thumbnail

모노레포 도구(yarn, lerna)

모노레포를 사용하기 위해 편리한 도구들이 있다. Yarn , Learn ,Nx , Turborepo 등 많이 있지만 yarn과 learn에 대해서만 알아보려고 한다. npm도 있다고는 들었다(?) 자료를 찾다가 읽었는데 yarn이 우선으로 가지고 있어서 yarn을 모노레포때문에 사용한다고 했다가 후발주자로 npm도 모노레포가 되도록 업데이트 했다고 읽었다. 일단 공부는 naver D2에서 정리된 개념으로 공부했다. 나중에 실제로 사용하게 되면 좀더 자세히 알아보고 오늘은 겉핡기식으로 정리해보려고 한다. naver D2 모노레포 도구 나머지들은 위의 사이트에서 확인해보자. yarn Yarn 은 workspaces 필드를 사용해서 모노레포를 구성할수있다. 용어 project = 저장소 하나 이상의 worktree 포함

2022년 12월 10일
·
0개의 댓글
·
post-thumbnail

Lerna+Nextjs 프로젝트 구성

1. Lerna를 이용한 첫번째 프로젝트 기본 구성 > ### 1. lerna 초기화 lerna 를 글로벌 로 설치하는 방법과 npx 를 사용해 최신버전을 사용하는 방법이 있다. 이 글에서는 npx 를 활용하는 방법을 사용할 예정이다. 1. 프로젝트 초기 세팅을 해준다. 를 사용해서 먼저 프로젝트 초기 세팅을 해준다. 위와 같이 파일이 생성되면 넘어가도 된다. 2. lerna.json 파일을 들어가서 아래와 같이 변경 해준다. 3. package.json 파일을 수정해준다. 먼저 실행 스크립트 추가 다음 npm-run-all 을 설치 해준다. 개발할때만 필요한 라이브러리 이므로 devDependencies에 설치해준다. > ### 2. packag

2022년 10월 27일
·
0개의 댓글
·

모노레포 구성하기 with lerna

도입 회사 여러 프로젝트에 중복 사용되는 유틸리티 코드와 통일되지 않은 버전들이 너무 많아 관리가 힘들어 lerna를 사용해 이 문제를 해결해보려 한다. lerna >“A tool for managing JavaScript projects with multiple packages.” Lerna는 여러 개의 패키지를 관리하는 JavaScript 프로젝트를 위한 도구입니다. Lerna를 사용하면 모노레포(Monorepo) 형태로 구성된 프로젝트에서 여러 패키지를 일괄적으로 관리하고, 배포 및 테스트를 쉽게 수행할 수 있습니다. 사용법 설치 npm i -g lerna 프로젝트 초기화 lerna init 패키지 추가하기 lerna create 패키지이름 의존성 관리 lerna.json lerna 실행 lerna run build lerna run start script 실행 > --stream

2022년 7월 21일
·
0개의 댓글
·
post-thumbnail

mono-repo와 lerna

multi-repo (poly-repo) 하나의 repository 안에 하나의 프로젝트가 들어있는것을 의미한다. 일반적인 경우 대부분 multirepo를 사용한다. 👍 장점 1️⃣ repository 별 owner를 지정 할 수 있다. package 별로 관리가 가능하기 때문에, 각 repository별 owner를 지정할 수 있다. ⇒ 패키지 관리가 수월해진다. 2️⃣ CI Build가 빠르다. 하나의 repository 별 하나의 CI를 구성 할 수 있어, 리소스가 적다. ⇒ CI의 Build 속도가 빠르다. 3️⃣ 패키지의 명확한 분리를 통해 유연성을 향상 시킬 수 있다. repository가 분리되어 있어, 각 패키지의 마스터 코드의 충돌을 방지 할 수 있다. ⇒ 서로 연관 관계가 없어 추가, 수정, 유지 관리의 유연성이 향상된다. 👎 단점 1️⃣ 중복된 설정과 반복된 설치가

2022년 6월 30일
·
0개의 댓글
·
post-thumbnail

MonoRepository

TL;DR 이번 포스트에서는 Lerna를 이용한 MonoRepository방식을 프로젝트에 적용한 이야기를 해 보고자 한다 (lerna + yarn + 모듈간 다국어 처리) 프로젝트 적용 시 곤란했던 상황 모듈간 다국어 처리 문제. => 해결 PreBuild, Include 방식 결정. => PreBuild 지향 새로운 환경이 불편한 팀원(코드가 한곳에 모여 있으면 실수로 수정하면 어떡해요?, 책임질 수 있어요?) use Name | Version | :------ | :------ | Vue | 3.0.0 | Node | 16.14.0 | lerna | 4.0.0 | yarn | 1.22.17 | tsc | 4.5.4 | Mono프로젝트 구조. 프로젝트 실행과

2022년 3월 10일
·
0개의 댓글
·

React-Native + CRA MonoRepo 환경 구축하기

React-Native(RN)에서 MonoRepo 환경 구축하기 > 현재 진행하고 있는 프로젝트에서 CRA + ReactNative Monorepo 초기세팅 작업을 진행했던 경험을 바탕으로 개발환경을 구축하는 방법을 공유하고자 작성하는 글입니다. 관련된 자료가 많이 없어서 방법을 찾고 에러를 해결하는 과정에 많은 소요가 들었기에 이 과정을 공유해서 많은 분들이 참고해서 더 빠르고 편하게 환경설정을 돕고자 작성하는 글입니다. > 버전 및 목적별로 조금씩 설정하는 방법이 다르기에 제가 사용한 방법이 최적의 효율을 내는 방법이 아닐수도 있고, 사용하는 패키지들의 버전이 바뀌면 조금씩 상이한 부분이 존재해서 수정해야 하는 부분이 존재할 수 있습니다. 시작전에 이 포스트는 React-Native(이하 RN) 0.63, CRA(typescript-template 1.1.0) 기준으로 작성되었습니다. 왜 사

2020년 12월 6일
·
4개의 댓글
·
post-thumbnail

Lerna를 활용한 Mono-Repo 구축 완벽 가이드 - 개념 정리

아직 Mono-Repo나 이를 도와주는 lerna가 널리 알려지지 않을 것 같다. 근래에 Mono-Repo 구축과 lerna를 사용할 기회가 있어서 실제로 반영하고 정보를 수집해 보았다. 모든 lerna 관련된 포스팅을 보았지만 lerna에 관련된 주요 명령어라든가 Mono-Repo에 대한 간략한 설명뿐 예제를 통한 하나의 workflow를 설명하는 곳이 없어서 아쉬움이 있었다. lerna의 명령어와 설정은 단순하지만, 생각보다 잘 안 되었다. 여러 번의 초기화와 Package 생성을 하면서 어느 정도 감을 잡을 수 있었다. 이렇게 쌓은 노하우 나와 같이 하나의 완성도 있는 절차가 필요하고 개념을 파악하는 사람들에게 도움이 되기를 바라며 정리를 해보았다. lerna를 알기 전에 Mono-Repo에 대해서 알아야 하고 Mono-Repo를 알기 위해서는 비교 대상인 Multi-Repo를 알아야 한다. 그러므로 해당 포스팅에서는 `Multi

2020년 8월 31일
·
0개의 댓글
·

Lerna@mono-repo

Lerna? 주요 커맨드 1. lerna bootstrap 각 패키지들의 의존을 설치함 root package에 공통으로 사용되는 dependency를 생성하고 각 의존 패키지에 링크를 생성함 2. lerna run 각 패키지들의 npm 명령어를 실행 scope를 지정할 수 있으며 scope를 지정하지 않을 경우 전체 패키지에 명령어를 수행함 --ignore를 통해 특정 패키지를 제외할 수 있음 자세한 부분은 lerna run -h 를 통해 참고

2020년 8월 3일
·
0개의 댓글
·