diff --git a/vue/README.md b/vue/README.md index 5e8a344..665e435 100644 --- a/vue/README.md +++ b/vue/README.md @@ -106,6 +106,8 @@ Types live under the `@nside/wefa/types` export: import type { WefaButtonProps } from '@nside/wefa/types'; ``` +The published package also includes the Backend-for-Frontend OpenAPI document at `@nside/wefa/bff-openapi`. + ### Theme preset To apply the NSIDE Prime theme preset in your app: diff --git a/vue/package.json b/vue/package.json index c443a3d..f015dbc 100644 --- a/vue/package.json +++ b/vue/package.json @@ -42,6 +42,7 @@ "import": "./dist/network.js", "require": "./dist/network.cjs" }, + "./bff-openapi": "./dist/bff/openapi.yaml", "./types": "./dist/lib.d.ts", "./style": "./src/assets/main.css" }, diff --git a/vue/vite.config.ts b/vue/vite.config.ts index b4220eb..ecfe5af 100644 --- a/vue/vite.config.ts +++ b/vue/vite.config.ts @@ -1,4 +1,5 @@ import { fileURLToPath, URL } from 'node:url' +import { copyFileSync, existsSync, mkdirSync } from 'node:fs' import { defineConfig } from 'vite' import { resolve } from "path" import vue from '@vitejs/plugin-vue' @@ -6,9 +7,24 @@ import tailwindcss from '@tailwindcss/vite' import dts from 'vite-plugin-dts' import tidewave from 'tidewave/vite-plugin' +const bffOpenApiSource = resolve(__dirname, '../bff/bff_app/openapi/openapi.yaml') +const bffOpenApiDistDir = resolve(__dirname, 'dist/bff') +const bffOpenApiDistFile = resolve(bffOpenApiDistDir, 'openapi.yaml') + // https://vite.dev/config/ export default defineConfig({ plugins: [ + { + name: 'copy-bff-openapi', + writeBundle() { + if (!existsSync(bffOpenApiSource)) { + throw new Error(`Missing BFF OpenAPI file at ${bffOpenApiSource}`) + } + + mkdirSync(bffOpenApiDistDir, { recursive: true }) + copyFileSync(bffOpenApiSource, bffOpenApiDistFile) + }, + }, tidewave(), vue({script: {defineModel: true}}), // vueDevTools(),