Lewati ke konten utama

Instalasi

Persyaratan​

  • Untuk penggunaan Node.js, diperlukan Node.js >= 22.12.0 (dinyatakan dalam kolom engines paket).
  • Dokumen OpenAPI yang sudah diurai sebagai objek JavaScript, bukan string JSON/YAML mentah.
  • Browser modern dengan Fetch API untuk penggunaan browser.

Paket menyediakan build ESM (dist/index.js) dan CommonJS (dist/index.cjs) beserta deklarasi TypeScript. Tidak ada dependensi runtime.

npm​

npm install @powerduck/openapi-codegen

pnpm​

pnpm add @powerduck/openapi-codegen

Yarn​

yarn add @powerduck/openapi-codegen

Penggunaan di Node.js​

import { generate } from "@powerduck/openapi-codegen";

CommonJS:

const { generate } = require("@powerduck/openapi-codegen");

Generator bawaan terdaftar otomatis saat modul diimpor, sehingga generate langsung berfungsi tanpa pengaturan tambahan.

Penggunaan di browser​

Pustaka sepenuhnya kompatibel dengan browser tanpa modul bawaan Node.js. Muat dari CDN ESM dan panggil langsung:

<script type="module">
import { generate, list } from "https://esm.sh/@powerduck/openapi-codegen";

const document = {
openapi: "3.1.0",
info: { title: "Example API", version: "1.0.0" },
servers: [{ url: "https://api.example.com" }],
paths: {
"/hello": { get: { responses: { "200": { description: "OK" } } } },
},
};

const code = generate({
document,
path: "/hello",
method: "get",
language: "javascript",
client: "fetch",
});

console.log(code);
</script>

Vite, esbuild, dan webpack juga langsung dapat digunakan; build ESM mendukung tree shaking.

Memberikan dokumen​

Berikan objek yang sudah diurai. Untuk JSON:

import { readFile } from "node:fs/promises";

const document = JSON.parse(await readFile("./openapi.json", "utf8"));

Untuk YAML, uraikan terlebih dahulu dengan paket YAML terpisah:

import YAML from "yaml";
const document = YAML.parse(await readFile("./openapi.yaml", "utf8"));

Struktur paket​

Titik masukJalur
Titik masuk ESMdist/index.js
Titik masuk CommonJSdist/index.cjs
Definisi tipedist/index.d.ts

Tidak ada program CLI; pustaka ini hanya digunakan melalui kode.

Langkah berikutnya​