-
Nx.dev를 이용한 Angular 프로젝트 만들기■ Front-End/- Angular 2020. 5. 10. 22:28
Nx.dev는 monorepos 프로젝트를 위한 개발 툴이다. 기존에 Lerna, Git-repo 등 다른 툴로 monorepo를 구성할 수 있었는데, Nx.dev라는 걸 알게되어서 이를 이용해 프론트 개발 환경을 구성해보기로 했다.
monorepos 란?
In revision control systems, a monorepo (syllabic abbreviation of monolithic repository) is a software development strategy where code for many projects is stored in the same repository.
(출처: https://en.wikipedia.org/wiki/Monorepo)
monorepo는 한 repository에 여러 프로젝트를 저장하고 관리하는 소프트웨어 개발 전략 중 하나이다.아래 그림은 mono-repo 외에 monolith, multi-repo에 대한 설명을 알기 쉽게 보여주고 있다.
기존에는 주로 프론트/서버 프로젝트를 Multi-repo 구조로 구성했었다. 사실 나는 mono-repo 보다는 multi-repo를 더 선호하는 타입이다. 아무래도 한 레포지터리에 여러 프로젝트가 들어가있다보면 무거워지고, 특히 공동 작업을 할 때 풀받아야되는게 많다보니... 충돌이라도 일어나면 stash에 작업한거 옮기고 풀받고 다시 덮어씌우는 일이 반복되면 너무 귀찮다ㅠㅠ
하지만 이번 프로젝트는 서버를 제외한 프론트 + 마크업 프로젝트들만 모아두고 있기 때문에, monorepo 구조로 가도 괜찮을 것 같았다.
그리고 공통으로 사용하는 컴포넌트들은 라이브러리로 빼서 사용해도 될 것 같고..!
Monorepo 프로젝트 만들기
Nx: Extensible Dev Tools for Monorepos
With Nx, you can develop multiple full-stack applications holistically and share code between them all in the same workspace. Add TypeScript, Cypress, Jest, Prettier, and Nest into your dev workflow.
nx.dev
Nx.dev에서는 현재 Angular와 React를 이용해 프로젝트를 생성할 수 있는 가이드를 제공하고 있다. 그 중에서 나는 Angular를 선택했다.
Library에서 만든 Component 사용하기
튜토리얼을 통해 공통으로 사용할 코드들을 lib 폴더에 추가한다. 나는 공통 컴포넌트를 관리할 'ui-component' 라는 이름을 가진 컴포넌트 라이브러리를 추가했다.
만약, interface와 같은 파일을 여러 프로젝트에서 사용하고 싶다면 아래 튜토리얼을 따라하면 된다.
https://nx.dev/angular/tutorial/07-share-code
Step 7: Share Code
Step 7: Share Code
nx.dev
만약 Component를 여러 프로젝트에서 사용하고 싶다면 아래 튜토리얼을 따라한다.
https://nx.dev/angular/tutorial/08-create-libs
Step 8: Create Libs
Step 8: Create Libs
nx.dev
⚠️
처음엔 monorepo 프로젝트를 튜토리얼을 보고 만들었지만, 라이브러리 추가하는 건 vscode에서 제공하는 Nx console을 이용했다. 그랬더니 라이브러리에 Component를 추가해도, 실제 프로젝트에서 사용하려고하니 보이지 않았다.
구글링해보니 라이브러리 내 컴포넌트를 만들 때, export가 빠져있던게 원인이었다.
{라이브러리 내 컴포넌트명}.module.ts 파일을 열고 아래와 같이 수정하면 정상적으로 나온다.'■ Front-End > - Angular' 카테고리의 다른 글
[Angular] routerLink vs href (0) 2020.06.18 [Angular] libs 폴더 내 assets 프로젝트에서 사용하기 (0) 2020.06.03 [Angular] input 한글 입력시 짤림 현상 (1) 2020.04.10 [Angular] ngx-translate를 이용한 다국어 처리 (0) 2020.04.02 Angular9 production build fail 이슈 처리 (0) 2020.03.25