파이프라인 만들기
deukpack.pipeline.json(기본 파일명; init의 -o로 다른 경로 가능)으로 여러 IDL·여러 출력을 한 번에 실행합니다.
0. 기본 워크플로(npm)
npm install deukpack
npx deukpack init # 대화형 또는 --non-interactive
npx deukpack run # cwd가 프로젝트 루트면 ./deukpack.pipeline.json 사용
설정 안의 경로는 JSON 파일이 있는 디렉터리 기준 상대 경로로 해석됩니다.
1. 소스에서 빌드해서 파이프라인 실행
1.1 클론 및 빌드
git clone https://github.com/joygram/DeukPack.git
cd DeukPack
npm ci
npm run build
1.2 설정 요약
단일 엔트리 파일(기존 방식):
{
"jobs": [
{
"name": "main",
"thriftFile": "idl/schema.thrift",
"outputDir": "gen",
"csharp": true,
"cpp": true,
"ts": false,
"js": false
}
]
}
defineRoot 아래 전체 .deuk(잡에 thriftFile 없음):
{
"defineRoot": "_deuk_define",
"exclude": [],
"includePaths": [{ "path": "_deuk_define", "recursive": true }],
"jobs": [
{
"name": "main",
"defineScope": "all",
"exclude": [],
"outputDir": "_deuk_define",
"csharp": true,
"cpp": false,
"ts": true,
"js": true
}
]
}
defineScope": "all"—defineRoot아래 모든*.deuk를 모아exclude(전역+잡 병합) 적용 후 빌드.outputDir를defineRoot와 같게 두면_deuk_define/csharp등 하위에 생성.outputLangSubdirs— 잡별로csharp/cpp/ts/js한 단계 폴더명만 바꿀 때(구typescript/javascript등).--ts/--js및 파이프라인은 산출이ts/,js/(구typescript/·javascript/아님).
샘플: pipeline.sample-defineScope-all.json · 엔트리 방식: pipeline.sample.json.
1.3 실행(소스 빌드 후)
DeukPack 저장소 루트에서:
node scripts/build_deukpack.js --pipeline <설정_파일_경로>
2. 배포본(npm)으로 실행
2.1 설치
npm install deukpack
2.2 설정 위치
프로젝트 루트의 deukpack.pipeline.json 을 두면 npx deukpack run 이 그대로 사용합니다. 다른 경로는 npx deukpack --pipeline ./경로/설정.json.
2.3 실행
프로젝트 루트에서:
npx deukpack run
# 또는
npx deukpack --pipeline ./deukpack.pipeline.json
스크립트 직접:
node node_modules/deukpack/scripts/build_deukpack.js --pipeline ./deukpack.pipeline.json
절대 경로:
npx deukpack --pipeline /absolute/path/to/deukpack.pipeline.json
2.4 CI / 자동화
npx deukpack init --non-interactive
npx deukpack run
VSIX가 필요 없으면 init에 --skip-vsix.
3. 요약
| 구분 | 소스 빌드 후 | 배포본(npm) |
|---|---|---|
| 준비 | git clone → npm ci → npm run build |
npm install deukpack |
| 실행 | node scripts/build_deukpack.js --pipeline <config> |
npx deukpack run 또는 npx deukpack --pipeline ./deukpack.pipeline.json |
| 설정 경로 | 설정 파일 기준 상대 경로 | 동일. cwd는 프로젝트 루트 권장 |