CLI 레퍼런스
@asapjs/cli는 ASAPJS 프로젝트의 생성, 개발, 빌드, 실행을 위한 커맨드라인 도구입니다. asapjs 명령어로 프로젝트 스캐폴딩부터 프로덕션 배포까지 전체 개발 워크플로우를 지원합니다.
설치
# 프로젝트 devDependency로 설치 (권장)
npm install -D @asapjs/cli
# 전역 설치
npm install -g @asapjs/cli
# npx로 직접 실행
npx @asapjs/cli <command>이 페이지에서 찾을 수 있는 것
| 명령어 | 설명 |
|---|---|
asapjs new | 새 프로젝트 생성 |
asapjs dev | 개발 서버 (hot-reload) |
asapjs build | 프로덕션 빌드 |
asapjs start | 프로덕션 서버 실행 |
asapjs generate | 컴포넌트 생성 |
.asapjs.json | CLI 설정 파일 |
asapjs new
asapjs new <name> [options]새 ASAPJS 프로젝트를 생성합니다. 대화형 프롬프트를 통해 패키지 매니저와 데이터베이스 설정을 선택합니다.
| 인자/옵션 | 타입 | 기본값 | 설명 |
|---|---|---|---|
<name> | string | (필수) | 프로젝트 이름. 이 이름으로 디렉토리 생성 |
-t, --template | string | basic | 프로젝트 템플릿 |
대화형 프롬프트
| 프롬프트 | 선택지 | 기본값 |
|---|---|---|
| 패키지 매니저 | yarn, npm, pnpm | yarn |
| 데이터베이스 사용 여부 | yes, no | yes |
| 데이터베이스 종류 | mysql, postgres, sqlite | mysql |
생성되는 파일 구조
my-project/
├── src/
│ ├── index.ts # 애플리케이션 진입점 (Application 인스턴스 생성)
│ ├── config.ts # 설정 파일 (extensions, swagger, db 등)
│ └── route.ts # 라우트 정의 (빈 배열)
├── .asapjs.json # CLI 설정 파일
├── .env # 환경 변수
├── .env.local # 로컬 환경
├── .env.dev # 개발 환경
├── .env.prod # 프로덕션 환경
├── .gitignore
├── package.json
└── tsconfig.json자동 설치되는 의존성
| 패키지 | 종류 | 설명 |
|---|---|---|
@asapjs/core | dependencies | 프레임워크 코어 |
@asapjs/router | dependencies | 라우팅 |
@asapjs/common | dependencies | 공통 유틸리티 |
@asapjs/sequelize | dependencies | DB 사용 시 자동 추가 |
@asapjs/cli | devDependencies | CLI 도구 |
typescript | devDependencies | TypeScript 컴파일러 |
ts-node | devDependencies | TypeScript 실행 |
asapjs new my-api
cd my-api
asapjs devasapjs dev
asapjs dev [options]개발 서버를 시작합니다. ts-node으로 TypeScript를 직접 실행하며, chokidar로 파일 변경을 감지하여 자동으로 서버를 재시작합니다 (200ms 디바운스).
| 인자/옵션 | 타입 | 기본값 | 설명 |
|---|---|---|---|
-e, --env | string | local | 환경 이름. .env.{env} 파일을 로드 |
-p, --port | string | (config 참조) | 포트 번호. 미지정 시 .asapjs.json의 환경별 설정 사용 |
동작 방식
.env.{env}파일에서 환경 변수 로드.asapjs.json에서 프로젝트 설정 로드npx ts-node src/index.ts로 서버 시작 (TS_NODE_TRANSPILE_ONLY=true)src/**/*.ts,.env*,env/**/*파일 변경 감지 시 서버 재시작
감시 대상
| 패턴 | 설명 |
|---|---|
src/**/*.ts | TypeScript 소스 파일 |
.env* | 환경 변수 파일 |
env/**/* | env 디렉토리 하위 파일 |
# 기본 (local 환경)
asapjs dev
# 개발 환경, 포트 지정
asapjs dev --env development --port 4000asapjs build
asapjs build [options]프로덕션용으로 애플리케이션을 빌드합니다. TypeScript를 컴파일하고, 환경 변수 파일과 package.json을 출력 디렉토리에 복사합니다.
| 인자/옵션 | 타입 | 기본값 | 설명 |
|---|---|---|---|
-e, --env | string | production | 환경 이름. .env.{env} 파일을 {output}/.env로 복사 |
-o, --output | string | dist | 출력 디렉토리 |
빌드 단계
- 환경 변수 로드
- 출력 디렉토리 생성
.env.{env}→{output}/.env로 복사- TypeScript 컴파일 (소스맵:
.asapjs.json의build.sourceMap) package.json에서devDependencies,scripts제거 후{output}/package.json으로 복사
# 기본 프로덕션 빌드
asapjs build
# 개발 환경, 커스텀 출력
asapjs build --env development --output build빌드 후 배포:
cd dist
npm install --production
asapjs startasapjs start
asapjs start [options]프로덕션 모드로 애플리케이션을 실행합니다. 빌드된 JavaScript를 node로 실행합니다.
| 인자/옵션 | 타입 | 기본값 | 설명 |
|---|---|---|---|
-e, --env | string | production | 환경 이름 |
-d, --dir | string | dist | 애플리케이션 디렉토리 |
동작 방식
{dir}/index.js또는{dir}/src/index.js를 탐색- 해당 디렉토리에서 환경 변수 로드
NODE_ENV=production으로node실행
# 기본
asapjs start
# 커스텀 디렉토리
asapjs start --dir buildasapjs generate
asapjs generate <type> <name> [options]
# 단축형
asapjs g <type> <name> [options]ASAPJS 컴포넌트 보일러플레이트 코드를 생성합니다.
| 인자/옵션 | 타입 | 기본값 | 설명 |
|---|---|---|---|
<type> | string | (필수) | 컴포넌트 타입 |
<name> | string | (필수) | 컴포넌트 이름 |
-p, --path | string | src | 파일 생성 경로 |
지원 컴포넌트 타입
| 타입 | 별칭 | 생성 파일 | 설명 |
|---|---|---|---|
controller | — | {Name}Controller.ts | 라우트 컨트롤러 |
service | application | {Name}Service.ts | 비즈니스 로직 서비스 |
dto | — | {Name}Dto.ts | 데이터 전송 객체 |
# 컨트롤러 생성
asapjs g controller User
# → src/UserController.ts
# 서비스 생성 (커스텀 경로)
asapjs g service Post --path src/modules
# → src/modules/PostService.ts
# DTO 생성
asapjs g dto CreateUser
# → src/CreateUserDto.ts.asapjs.json
프로젝트 루트에 위치하는 CLI 설정 파일입니다. asapjs new로 프로젝트를 생성하면 자동으로 생성됩니다.
{
"environments": {
"local": {
"envFile": ".env.local",
"port": 3000
},
"development": {
"envFile": ".env.dev",
"port": 4000
},
"production": {
"envFile": ".env.prod",
"port": 8080
}
},
"build": {
"outDir": "dist",
"sourceMap": true
}
}environments
각 환경별로 사용할 .env 파일과 기본 포트를 정의합니다.
| 필드 | 타입 | 설명 |
|---|---|---|
envFile | string | 환경별 .env 파일 경로 |
port | number | 환경별 기본 포트. --port 옵션으로 오버라이드 가능 |
build
빌드 관련 설정입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
outDir | string | 빌드 출력 디렉토리 |
sourceMap | boolean | TypeScript 컴파일 시 소스맵 생성 여부 |
워크플로우 예제
# 1. 프로젝트 생성
asapjs new my-api
cd my-api
# 2. 컴포넌트 스캐폴딩
asapjs g controller User
asapjs g service User
asapjs g dto CreateUser
# 3. 개발
asapjs dev # 로컬 개발 서버
asapjs dev --env development # 개발 환경
# 4. 빌드 및 배포
asapjs build # 프로덕션 빌드
cd dist && npm install --production
asapjs start # 프로덕션 실행관련 항목
Last updated on