@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

/@repositive/apigen/

    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