LogoEurekaCodes
UncategorizedGeneral

백엔드 API 타입 배포 가이드

@types 라이브러리는 TypeScript 프로젝트에서 JavaScript 라이브러리의 타입 정보를 제공하는 역할을 함. 프론트엔드 개발 시, 타입 정보를 통해 코드 자동완성, 타입 체크, 에러 방지 등 개발 효율과 안정성을 높일 수 있다.

1.목적

  • @types 라이브러리는 TypeScript 프로젝트에서 JavaScript 라이브러리의 타입 정보를 제공하는 역할을 함.
  • 프론트엔드 개발 시, 타입 정보를 통해 코드 자동완성, 타입 체크, 에러 방지 등 개발 효율과 안정성을 높일 수 있다.
  • 타입 정의를 정확하게 빌드하고 관리하는 것이 유지보수와 협업에 매우 중요함.

2. 빌드 및 배포 절차

a) package.json에서 메이저 버전 업데이트 하기

# package
{
  "name": "your-repository-name"
  "version": "0.25.423"
}
```text
    - 메이저 업데이트: 타입 업데이트 시 (ex: v0.25.526)
    - 마이너 업데이트: 타입 변경 외 기능 업데이트 (ex: v0.25.526a)


### b) 타입 빌드하기

```javascript
// 타입 빌드하기
$ npm run types
  
> lemon-sandbox-api@0.25.526 pretypes
> rm -rf ./@types/dist && npm run prepretypes

> lemon-sandbox-api@0.25.526 prepretypes
> LS=1 ts-node @types/bin/init-package.ts

Done: lemon-sandbox-api#0.25.526

> lemon-sandbox-api@0.25.526 types
> ttsc -p ./@types/tsconfig.build.json


> lemon-sandbox-api@0.25.526 posttypes
> npm publish --dry-run ./@types

npm notice 
npm notice 📦  @lemoncloud/lemon-sandbox-api@0.25.526
npm notice === Tarball Contents === 
npm notice 85B    README.md                      
npm notice 2.3kB  dist/cores/types.d.ts          
npm notice 2.2kB  dist/service/backend-model.d.ts
npm notice 2.9kB  dist/service/backend-types.d.ts
npm notice 98.1kB dist/tsconfig.build.tsbuildinfo
npm notice 1.3kB  dist/view/types.d.ts           
npm notice 466B   package.json                   
npm notice === Tarball Details === 
npm notice name:          @lemoncloud/lemon-sandbox-api            
npm notice version:       0.25.526                                 
npm notice filename:      lemoncloud-lemon-sandbox-api-0.25.526.tgz
npm notice package size:  36.6 kB                                  
npm notice unpacked size: 107.4 kB                                 
npm notice shasum:        df9d9285c6b1c1b6597f8003412613dd68897313 
npm notice integrity:     sha512-yk645lStz6N3m[...]OVOQiPmO9hDyA== 
npm notice total files:   7                                        
npm notice 
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access (dry-run)
+ @lemoncloud/lemon-sandbox-api@0.25.526
```text
  - 위 명령어를 실행하면 `@types` 폴더 내 타입 정보가 담긴 파일들이 생성 된다.
---

## 3. NPM 배포

```javascript
$ npm publish ./@types
```text
- 빌드된 타입 정의를 npm에 배포한다.
- 주의: npm에 로그인되어 있어야함!! (토큰 등록 필요)
---

## 4. 트러블슈팅

- npm run types 실행 후, cores 폴더에 예상치 못한 파일이 생성되었다면, 이는 import 에러로 인한 문제일 수 있음
  - @types/dist/cores 경로에 types.d.ts 파일 외 다른 파일이 있으면 안됨!!
  - 이 경우, lemon-core와 관련된 import 경로를 확인하여 올바르게 수정해야 한다.