docusaurus를 이용한 개인 개발 블로그 만들기 Step 1
jekyll, gatsby와 같은 도구를 이용하여 github repo를 이용하여 개인 개발 블로그를 듬성 듬성 관리를 해오다가 거의 방치를 했었다. 사실 너무 귀찮기도 하고...해보고 싶은 것들은 많은데, 회사일과 개인일 들에 밀려서...주어진 시간 대비 너무 멋드러지게 해보고 싶다는 생각에...목표가 너무 크다보니 손을 놓아버리게 된 것은 아닌가 싶기도 하다. 이제 그만 지난 날은 반성하고...작더라도 하나씩 이루어가는 성취감을 느끼며 나 자신의 경험을 남기고....미래의 내가 필요할 때 참고하기 위한 자료를 남기기 위한 공간을 다시 만들어야겠다. (누군가 이 글을 보는 사람은 나와 같은 과오를 범하지 않았으면 한다..)
사설은 여기까지 하고...
이번에는 docusaurus
라는 문서 생성 도구를 이용하여 MonoRepo 구조에 적용하여 블로그를 구성해보고자 한다.
모노레포는 NX
라는 도구를 이용하여 구성할 계획이다.
그리고 해당 글에는 나의 개발 블로그를 만들어가기 위한 과정 중 프로젝트 환경을 구성하기 위한 과정에 대한 기록을 정리하려고 한다.
Create MonoRepo Project with NX
create-nx-workspace를 이용하여 레파지토리를 생성한다.
기본적인 폴더만 구성된 프로젝트를 생성하기 위해 --preset=apps
를 명시하여 생성하였다.
npx create-nx-workspace gloria-tilog --preset=apps
그럼 다음과 같은 구조로 프로젝트가 생성된다.
├── README.md
├── apps
├── libs
├── nx.json
├── node_modules
├── package-lock.json
├── package.json
└── tools
├── generators
└── tsconfig.tools.json
Configure yarn berry (yarn 3.0)
yarn 3.0을 이용하기 위해 다른 설정을 진행하기 전에 yarn 설정을 먼저 진행하였다.
# yarn 최신버전으로 업데이트하기 위함
yarn set version stable
업데이트된 yarn을 이용해서 다시 패키지 모듈을 설치한다.
# re-install package modules
yarn install
yarn document
Setting Up React
React를 이용하여 블로그에서 사용할 컴포넌트를 개발할 계획이므로 @nrwl/react
을 설치해주었다.
yarn add -D @nx/react
그리고 블로그에서 라이브러리 형태로 사용할 것이므로 다음과 같이 library를 생성해주었다.
npx nx g @nx/react:lib ui
위와 같이 실행하고 나면 다음과 같이 libs 폴더 하위에 generator 실행 시 명시한 폴더명인 ui가 생성되어있다.
libs
└── ui
├── README.md
├── jest.config.ts
├── project.json
├── src
│ ├── index.ts
│ └── lib
│ ├── ui.spec.tsx
│ └── ui.tsx
├── tsconfig.json
├── tsconfig.lib.json
└── tsconfig.spec.json
만약, 위의 과정에서 다음과 같은 에러가 발생한다면....
> npx nx g @nx/react:lib ui
Need to install the following packages:
nx
Ok to proceed? (y) y
> NX Could not find Nx modules in this workspace.
Have you run npm/yarn install?
다음과 같은 과정으로 수정하여 해결하였다. (ref: https://github.com/nrwl/nx/issues/2386#issuecomment-890019994)
- Add
nodeLinker: node-modules
from.yarnrc.yml
(if you definepnpMode: loose
, please remove it) - Run
yarn install
- Run
npx nx g @nx/react:lib ui
Again - Remove
nodeLinker: node-modules
from.yarnrc.yml
- Run
yarn install
again to remove thenode_modules
directory and add back the .pnp.cjs file
Create MonoRepo Project with NX
@nx-plus/docusaurus
플러그인을 이용하여 docusaurus를 구성한다.
yarn add @nx-plus/docusaurus --dev
docusaurus application을 생성해준다.
npx nx g @nx-plus/docusaurus:app doc
이제 docusaurus CLI를 이용하여 docusaurus application을 apps 폴더 하위에 추가해준다.
npx create-docusaurus docs classic apps/ --typescript
yarn add -D typescript @docusaurus/module-type-aliases @tsconfig/docusaurus
설치가 되고나면 다음과 같이 확인할 수 있다.
apps
└── doc
├── babel.config.js
├── blog
├── docs
├── docusaurus.config.js
├── project.json
├── sidebars.js
├── src
├── static
└── tsconfig.json
Run Serve
package.json
파일에 다음과 같이 스크립트를 추가해준다.
"scripts": {
"start": "nx serve",
"build": "nx build",
"deploy": "nx deploy",
"test": "nx test",
},
위와 같이 구성 후 다음과 같이 실행을 하면 서버가 정상적으로 기동된 것을 확인할 수 있따.
❯ yarn start doc
> nx run doc:serve
[INFO] Starting the development server...
[SUCCESS] Docusaurus website is running at: http://localhost:3000/
✔ Client
Compiled successfully in 6.23s
client (webpack 5.81.0) compiled successfully
✔ Client
Compiled successfully in 83.25ms
client (webpack 5.81.0) compiled successfully
이제 다음에는 다음과 같은 설정들을 보완해봐겠다.
- husky
- lint-staged
- eslint
- commitlint
- cspell