🌱epip-generate
epip-generate is a powerful package designed to automate the creation of backend services from API definitions using swagger.json. It generates all DTOs, services, and even backend validations automatically, streamlining your development process.
Installation
Install the package as a development dependency using npm:
npm i epip-generate -D
Usage
There are two ways to implement epip-generate in your project:
- Using Scripts in package.json
You can integrate epip-generate by adding a script to your package.json:
{
"scripts": {
"make:api": "epip-generate vue -o ./src/repository -p to -h https://api.test.hemscap.com/v1/api/swagger.json -in @core/interceptor -e VITE_APP_URL -s 2 -ti 300000 && npm run format"
},
"dependencies": {
// your dependencies here
},
"devDependencies": {
"epip-generate": "latest"
// your dev dependencies here
}
}
- Using Vite Plugin
You can also use epip-generate as a Vite plugin. Update your vite.config.ts file as follows:
import { defineConfig } from 'vite';
import { EpipGenerateVitePlugin } from 'epip-generate';
export default defineConfig({
plugins: [
EpipGenerateVitePlugin({
type: 'vue',
destinationPath: process.env.VITE_EPIP_DESC_PATH as string,
plugins: ['to'],
swaggerPath: process.env.VITE_EPIP_SWAGGER as string,
interceptorPath: process.env.VITE_EPIP_INTERCEPTOR_PATH as string,
baseUrlEnvironmentKey: process.env.VITE_EPIP_ENV_KEY as string,
numberOfBackPathModels: 2,
axiosTimeoutMillisecond: 300000
})
]
});
epip-generate Configuration
The epip-generate package offers several configuration options:
- type: "vue" | "angular" | "react"
-
vue: Generates services using axios.
-
angular: Intended to generate services using rxjs (currently not implemented).
-
react: Intended to generate services using hooks (currently not implemented)\
-
destinationPath: The path where the generated files will be stored.
-
plugins: Array<"to" | "class-dto">
- to: Uses await-to-js to handle axios responses.
- class-dto: Generates DTOs as classes, enabling automatic validation. You can update validation rules for fields using the validationProperty method in the class, useful for libraries like Quasar.
-
swaggerPath: The path to your swagger.json file.
-
interceptorPath: The path to a file that exports the following three methods:
export const onRequest = async function (config: any) {
// your code...
return config;
};
export const onResponse = function (response: any) {
// your code...
return response.data;
};
export const onResponseError = function (response: AxiosError) {
// your code...
throw response;
};
-
baseUrlEnvironmentKey: The environment variable key that contains the base URL for your APIs.
-
numberOfBackPathModels: The number of directories to traverse back for path resolution in the model.ts file.
-
axiosTimeoutMillisecond: The timeout value for axios requests, in milliseconds.
License
MIT
Authors