Generate API definitions from OpenAPI YAML specs
Install
npm install --save-dev @repositive/apigen
Add the apigen
script to your "scripts"
section in package.json
:
"apigen": "apigen ts -o ./src/openapi
Usage
npm run apigen
Output is rendered to a folder at the path specified in the NPM scripts command (./src/openapi
). If the folder (or its parents) don't exist, they will be created. Any other non-target files in the folder will be kept. It's good practice to add ./src/openapi
to .gitignore
.
Development
Setup:
Run:
# Generates Typescript types into `./rendered/typescript`
cargo run -- ts /path/to/api.yaml -o ./rendered/typescript
View docs:
cargo doc --open
Build dependencies
The following targets are supported by apigen:
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- x86_64-apple-darwin
To build for these targets on a Linux machine, make sure you have the correct build dependencies:
# Ensure Rust targets are added
rustup target add x86_64-unknown-linux-gnu x86_64-unknown-linux-musl x86_64-apple-darwin
# Install cross compilation tools (Debian/Ubuntu/Mint)
apt install musl musl-tools clang gcc g++ zlib1g-dev libmpc-dev libmpfr-dev libgmp-dev
# Install osxcross toolchain (requires sudo)
./osxcross-setup.sh
Releasing to NPM
# Make sure we're deploying up to date master
git checkout master && git pull
# (optional) login to NPM
npm login
# Increment NPM version number
npm version major|minor|patch
# Publish to NPM (builds binaries for targets)
npm publish
# Push generated tag to Github
git push --tags