lemon-devkit
Version:
Lemon Serverless Micro-Service Platform for local development
91 lines (64 loc) • 3.09 kB
Markdown
# lemon-devkit
local develop kit for [lemon-core](https://github.com/lemoncloud-io/lemon-core)
## Usage
- required to install seperately `lemon-core` in advance. (recommended to use `4.2.x` version)
```sh
# STEP.1 install `lemon-devkit`
npm i --save-dev lemon-devkit
```
----------------
## lemon-fields
`ts-transformer-keys`의 `keys<T>()`를 generated registry 방식으로 교체하는 CLI 도구이다.
- `migrate`: 기존 `keys<T>()` 호출을 `fieldKeys.<name><T>()`로 변환
- `gen`: TypeScript checker로 field 목록을 읽고 `src/generated/field-registry.ts` 생성
- `--check`: generated registry가 source와 같은지 확인
- `guard-common`: transformer spec의 `checkAllKeys` 안에 공통 모델 필드 검증 자동 삽입/갱신
### 적용 순서
#### 1. project `package.json`에 script 추가
```json
{
"scripts": {
"fields:migrate": "lemon-fields migrate --report --update-tsconfig",
"fields:gen": "lemon-fields gen --report",
"fields:check": "lemon-fields --check",
"fields:guard-common": "lemon-fields guard-common --report"
}
}
```
#### 2. migration 명령어 실행
```sh
npm i --save-dev lemon-devkit@0.2.0
npm run fields:migrate
npm run fields:gen
npm run fields:guard-common
```
- `npm i --save-dev lemon-devkit@0.2.0`: project에 `lemon-devkit` 0.2.0를 dev dependency로 설치
- `npm run fields:migrate`: 기존 `keys<T>()` 호출을 `fieldKeys.<name><T>()`로 변환하고 `ts-transformer-keys` transformer plugin 제거
- `npm run fields:gen`: TypeScript checker로 field 목록을 읽어 `src/generated/field-registry.ts` 생성
- `npm run fields:guard-common`: transformer spec의 `checkAllKeys`에 공통 모델 필드 검증 삽입/갱신
#### 3. test와 build에 추가
기존 project의 `build`나 `test:watch`가 이미 있으면 명령 전체를 바꾸지 말고 앞에 `npm run fields:gen &&` 또는 `npm run fields:guard-common &&`만 붙인다.
```json
{
"scripts": {
"build": "npm run fields:gen && tsc",
"test:watch": "npm run fields:guard-common && LS=1 jest --config=jest.config.json --watchAll"
}
}
```
CI에는 `npm run fields:check`를 추가하는 것을 권장한다.
`src/generated/field-registry.ts`는 source가 직접 import하는 파일이므로 commit 대상이다.
자세한 사용법은 [lemon-fields README](src/fields/README.md)를 참고한다.
----------------
## Proxy
`lemon-devkit@0.2.0`부터 install/upgrade 시 consumer project의 `docs/proxy-implementation-guide.md`와 `README.md`에 proxy 구현 가이드를 자동 반영한다.
Proxy 기능을 추가하거나 변경할 때는 [proxy implementation guide](docs/proxy-implementation-guide.md)를 먼저 확인한다.
`BackendProxy`, `ManagerProxy`, `guardProxy()` 계열 동작과 프로젝트 적용 절차를 이 문서 기준으로 맞춘다.
----------------
## VERSION INFO
| Version | Description
|-- |--
| 0.2.0 | optimized with `lemon-core@4.2.x`.
| 0.2.0 | added proxy development documentation.
| 0.0.6 | optimized `loadProfile()` w/o async.
| 0.0.4 | initial release.