@repositive/apigen

0.3.0 • Public • Published

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:

  • Install Rust with Rustup
  • Install Node with NVM
  • npm install

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

Dependencies (1)

Dev Dependencies (1)

Package Sidebar

Install

npm i @repositive/apigen

Weekly Downloads

6

Version

0.3.0

License

UNLICENSED

Unpacked Size

20.2 MB

Total Files

6

Last publish

Collaborators

  • dennisschwartz
  • istar-eldritch
  • jamwaffles
  • jpcano
  • leojpod
  • reposibot
  • tombyers