Loading...
Loading...
devtools usage for alova. Use this skill whenever the user mentions alova openapi configuration, @alova/wormhole, API code generation, OpenAPI/Swagger with alova integration, alova devtools, or the alova VSCode extension. Trigger even for questions like "how do I use OpenAPI with alova" or "how do I generate API code with alova".
npx skill4agent add alovajs/skills alova-wormhole-usage
For client-side usage, seeskill. For server-side (Node/Bun/Deno), seealova-clientskill.alova-server
@alova/wormholeInstall → Create alova.config → Run alova gen → Customize alova instance → Use generated APIsalova.config.cjsalova.config.jsalova.config.tsalova initimport { defineConfig } from '@alova/wormhole';
export default defineConfig({
// API generation settings array
generator: [
{
// OpenAPI file URL or local path
input: 'http://localhost:3000/openapi.json',
// Output path
output: 'src/api',
// Platform type (swagger)
platform: 'swagger',
// Plugin configuration
plugins: [],
// Response data media type (default: application/json)
responseMediaType: 'application/json',
// Request body media type (default: application/json)
bodyMediaType: 'application/json',
// API version (default: auto)
version: 'auto',
// Code type: auto/ts/typescript/module/commonjs
type: 'auto',
// Global API export name (default: Apis)
global: 'Apis',
// Global mount object (default: globalThis)
globalHost: 'globalThis',
// Filter/transform API interface functions
handleApi: (apiDescriptor) => apiDescriptor,
},
],
// Auto-update configuration
autoUpdate: true, // or { launchEditor: true, interval: 5 * 60 * 1000 }
});Thecan also accept a sync or async function to allow for more dynamic configuration.defineConfig
| Plugin | Description | Documentation |
|---|---|---|
| Rename API functions and parameter names, supports camelCase/snake_case | Docs |
| Modify API tag names | Docs |
| Add/remove/modify API parameter types | Docs |
| Filter APIs by URL and tag matching | Docs |
| Auto-import Apifox projects | Docs |
| Exclude types that need customization | Docs |
import { rename, tagModifier } from '@alova/wormhole/plugin';
export default defineConfig({
generator: [
{
plugins: [
rename({ style: 'camelCase' }),
tagModifier({ ... })
]
}
]
});apiDescriptorhandleApi: (apiDescriptor) => {
apiDescriptor.operationId = apiDescriptor.operationId.replace(/_([a-z])/g, (match, group) =>
group.toUpperCase()
);
return apiDescriptor;
};handleApi: (apiDescriptor) => {
if (apiDescriptor.url.includes('/user')) {
apiDescriptor.tags = ['userTag'];
}
return apiDescriptor;
};handleApi: (apiDescriptor) => {
// Return falsy value to filter this API
if (!apiDescriptor.path.startsWith('/user')) {
return;
}
return apiDescriptor;
};handleApi: (apiDescriptor) => {
apiDescriptor.responses = apiDescriptor.responses?.properties?.data;
return apiDescriptor;
};handleApi| Feature | Reference |
|---|---|
| Installation & setup | references/INSTALLATION |
CLI usage ( | references/CLI |
Programmatic API ( | references/PROGRAMMATIC-API |
Customizing the alova instance ( | references/ALOVA-INSTANCE |
| Troubleshooting | references/TROUBLESHOOTING |