Pipeline guide
Run multiple IDL inputs and outputs in one pass using deukpack.pipeline.json (default filename; any name works with --pipeline / -o on init).
0. Default workflow (npm)
npm install deukpack
npx deukpack init # interactive or --non-interactive
npx deukpack run # uses ./deukpack.pipeline.json when cwd is project root
Paths inside the config are resolved relative to the directory that contains the JSON file.
1. Building from source and running a pipeline
Clone the repository, build, then run the pipeline.
1.1 Clone and build
git clone https://github.com/joygram/DeukPack.git
cd DeukPack
npm ci
npm run build
1.2 Pipeline config basics
Single entry file (classic):
{
"jobs": [
{
"name": "main",
"thriftFile": "idl/schema.thrift",
"outputDir": "gen",
"csharp": true,
"cpp": true,
"ts": false,
"js": false
}
]
}
Directory-wide .deuk under defineRoot (no per-job 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"— collect every*.deukunderdefineRoot, apply mergedexclude(top-level + job), build via a short-lived bundle entry.outputDirmay matchdefineRootso outputs land under_deuk_define/csharp,…/cpp,…/ts,…/jsby default.outputLangSubdirs— optional per-job map{ "csharp", "cpp", "ts", "js" }to rename those single-segment folders (e.g. legacytypescript/javascript).--ts/--jsCLI and pipeline jobs emit underts/andjs/, nottypescript//javascript/.
Sample: examples/pipeline.sample-defineScope-all.json · older entry style: examples/pipeline.sample.json.
1.3 Run the pipeline (after source build)
From the DeukPack repository root:
node scripts/build_deukpack.js --pipeline <config_file_path>
2. Running a pipeline via the distribution (npm)
2.1 Install
npm install deukpack
2.2 Config location
Prefer deukpack.pipeline.json at the project root so npx deukpack run picks it up. You can use another path: npx deukpack --pipeline ./path/to/config.json.
2.3 Run
From project root (recommended):
npx deukpack run
# or
npx deukpack --pipeline ./deukpack.pipeline.json
Or invoke the script directly:
node node_modules/deukpack/scripts/build_deukpack.js --pipeline ./deukpack.pipeline.json
Absolute config path:
npx deukpack --pipeline /absolute/path/to/deukpack.pipeline.json
2.4 CI / automation
npx deukpack init --non-interactive
npx deukpack run
Use --skip-vsix on init when no VSIX install is desired.
3. Summary
| From source build | Distribution (npm) | |
|---|---|---|
| Setup | git clone → npm ci → npm run build |
npm install deukpack |
| Run | node scripts/build_deukpack.js --pipeline <config> (from repo root) |
npx deukpack run or npx deukpack --pipeline ./deukpack.pipeline.json |
| Config paths | Relative to config file directory | Same; cwd should be project root |