Yarn Workspace로 Monorepo를 만드는 방법
5245 단어 codenewbietutorialjavascript
지난 몇 년 동안 저는 대학교에서 교수를 위한 프로젝트를 진행했습니다. 고대 아시리아 무역에 관한 연구 시설을 제공하는 사이트입니다. 정말 재미있었고 그 과정에서 웹 개발에 대해 많은 것을 배웠습니다. 한동안 저는 프로젝트를 위해 세 개의 별도 Git 리포지토리를 유지했습니다. 하나는 Vue 프런트엔드용, 하나는 TS Express 백엔드용, 다른 하나는 다른 두 리포지토리 간에 공유되는 유틸리티 코드를 포함하는 것입니다.
이것은 최소한 유지하기가 까다로웠습니다. 코드베이스가 상대적으로 작기 때문에 모든 것을 단일 저장소로 옮기는 것이 유지 관리가 더 쉬울 것이라고 생각했습니다. 이 게시물에서는 여러 패키지가 포함된 JS 프로젝트용 monorepo를 쉽게 만드는 방법을 설명합니다.
프로젝트 만들기
새 디렉터리를 만든 다음 Yarn으로 초기화합니다.
$ mkdir vue-express-monorepo
$ cd vue-express-monorepo
$ yarn init -y
Yarn 작업 공간 설정
모노레포를 생성하기 위해 Yarn workspaces 을 사용할 것입니다. 문서에 따르면 "한 번만 실행하면
yarn install
모든 패키지를 한 번에 설치할 수 있는 방식으로 여러 패키지를 설정할 수 있습니다."npm을 사용하는 경우 동일한 목표를 달성하는 데 도움이 되는 Lerna이라는 꽤 좋은 도구가 있습니다. Yarn workspaces don't claim to replace Lerna , 하지만 내 목적을 위해 지금까지 Lerna 없이 Yarn 작업 공간을 사용할 수 있다는 것을 발견했습니다.두 개의 패키지를 만들어
packages
라는 디렉터리에 넣습니다. packages
디렉터리를 만듭니다.$ mkdir packages
Yarn에게
packages
디렉토리에 패키지가 포함되어 있음을 알려야 합니다. 다음과 같이 보이도록 package.json
파일을 편집합니다.{
"name": "vue-express-monorepo",
"private": true,
"workspaces": [
"packages/*"
]
}
이제 패키지를 만들 준비가 되었습니다.
패키지 생성
packages
디렉터리에 디렉터리를 만듭니다. Yarn으로 초기화하고 index.js
파일을 만듭니다.$ cd packages
$ mkdir package-a
$ cd package-a
$ yarn init -y
$ touch index.js
이제 이것을
index.js
파일에 추가하십시오.function packageAFunc() {
console.log('Using a function from package A');
}
module.exports = packageAFunc;
다른 패키지를 만들고 그 안에 있는
package-a
에서 이 함수를 사용해보자.$ cd ..
$ mkdir package-b
$ cd package-b
$ yarn init -y
$ touch index.js
index.js
의 package-b
파일에 다음을 추가합니다.const packageAFunc = require('package-a');
packageAFunc();
마지막으로 프로젝트의 루트 수준에서
yarn install
를 실행하기만 하면 됩니다.$ cd ../..
$ yarn install
Yarn은 프로젝트 루트의
package-a
폴더에 package-b
및 node_modules
를 연결합니다.package-b
파일을 실행해 보십시오.$ node packages/package-b/index.js
콘솔에 인쇄된 "패키지 A의 기능 사용"이 표시되어야 합니다!
결론
monorepo를 사용하기 위해 구축한 사이트를 변환하는 것은 매우 도움이 되었습니다. 이것은 매우 간단한 예이지만 이 게시물의 동일한 개념을 사용하여 3개의 개별 프론트엔드, 백엔드 및 유틸리티 패키지가 있는 모노레포를 만들었습니다. 덕분에 프로젝트 전체에서 코드를 훨씬 쉽게 공유할 수 있었습니다. 모노레포를 쉽게 만들 수 있는 이 흥미로운 기능이 Yarn에 포함되어 있다는 것이 정말 좋습니다.
이 접근 방식의 주요 이점 중 하나는 사이트에 대한 지속적인 배포입니다. 모든 것이 하나의 리포지토리에 있기 때문에 모든 것을 AWS에 배포하기 전에 Vue 프런트엔드와 TS Express 백엔드를 구축하는 빌드 스크립트를 쉽게 작성할 수 있었습니다. 사이트가 여전히 여러 리포지토리에 분산되어 있었다면 이것이 조금 더 까다로웠을 것이라고 생각합니다.
전체 코드와 함께 GitHub 리포지토리에 대한 링크를 게시했지만 여기에 다시 좋은 측정이 있습니다. https://github.com/bandrewfisher/monorepo-tutorial
Reference
이 문제에 관하여(Yarn Workspace로 Monorepo를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/brettfishy/how-to-create-a-monorepo-with-yarn-workspaces-208a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)