{"id":22486468,"url":"https://github.com/chenweiqun/swagger-vue","last_synced_at":"2025-07-31T01:18:02.613Z","repository":{"id":65412285,"uuid":"86784760","full_name":"chenweiqun/swagger-vue","owner":"chenweiqun","description":"Swagger to JS \u0026 Vue \u0026 Axios Codegen","archived":false,"fork":false,"pushed_at":"2020-04-23T07:33:17.000Z","size":39,"stargazers_count":173,"open_issues_count":10,"forks_count":61,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-04T22:42:41.414Z","etag":null,"topics":["axios","codegen","swagger","vue"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chenweiqun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-31T06:17:00.000Z","updated_at":"2024-12-25T12:13:50.000Z","dependencies_parsed_at":"2023-01-22T07:45:16.434Z","dependency_job_id":null,"html_url":"https://github.com/chenweiqun/swagger-vue","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chenweiqun/swagger-vue","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenweiqun%2Fswagger-vue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenweiqun%2Fswagger-vue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenweiqun%2Fswagger-vue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenweiqun%2Fswagger-vue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chenweiqun","download_url":"https://codeload.github.com/chenweiqun/swagger-vue/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenweiqun%2Fswagger-vue/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267972570,"owners_count":24174383,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axios","codegen","swagger","vue"],"created_at":"2024-12-06T17:14:39.553Z","updated_at":"2025-07-31T01:18:02.592Z","avatar_url":"https://github.com/chenweiqun.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# swagger-vue\nSwagger to JS \u0026amp; Vue \u0026amp; Axios Codegen\n# Installation\n```shell\nnpm install swagger-vue --dev\n```\n# Generate\n## Using NodeJS file\n```javascript\nconst swaggerGen = require('swagger-vue')\nconst jsonData = require('../api-docs.json')\nconst fs = require('fs')\nconst path = require('path')\n\nlet opt = {\n  swagger: jsonData,\n  moduleName: 'api',\n  className: 'api'\n}\nconst codeResult = swaggerGen(opt)\nfs.writeFileSync(path.join(__dirname, '../dist/api.js'), codeResult)\n```\n## Using Grunt task\n\nCreate **Gruntfile.js**\n```javascript\nconst fs = require('fs')\nconst path = require('path')\nconst swaggerGen = require('swagger-vue')\n\nmodule.exports = function(grunt) {\n\n  grunt.initConfig({\n    'pkg': grunt.file.readJSON('package.json'),\n    'swagger-vue-codegen': {\n      options: {\n        swagger: \"\u003c%= pkg.swagger.definition %\u003e\",\n        className: \"\u003c%= pkg.swagger.className %\u003e\",\n        moduleName: \"vue-\u003c%= pkg.swagger.moduleName %\u003e\",\n        dest: 'client/javascript'\n      },\n      dist: {\n\n      }\n    }\n  });\n\n  grunt.registerMultiTask('swagger-vue-codegen', function() {\n    var callback = this.async();\n    var opt = this.options();\n    var distFileName = path.join(opt.dest, opt.moduleName + '.js');\n\n    fs.readFile(opt.swagger, function(err, data) {\n      if (err) {\n        grunt.log.error(err.toString());\n        callback(false);\n      } else {\n        var parsedData = JSON.parse(data);\n\n        var codeResult = swaggerGen({\n          swagger: parsedData,\n          moduleName: opt.moduleName,\n          className: opt.className\n        });\n\n        fs.writeFile(distFileName, codeResult, function(err) {\n          if (err) {\n            grunt.log.error(err.toString());\n            callback(false);\n          } else {\n            grunt.log.writeln('Generated ' + distFileName + ' from ' + opt.swagger);\n          }\n        })\n      }\n    });\n  });\n\n  grunt.registerTask('vue', ['swagger-vue-codegen']);\n\n};\n\n```\nAnd set options in package.json\n```json\n...\n  \"swagger\": {\n    \"definition\": \"client/swagger.json\",\n    \"className\": \"API\",\n    \"moduleName\": \"api-client\"\n  }\n...\n```\nNow you can use `grunt vue` to run build task\n\n# Generated client usage\n\nIn Vue.js main file set API domain\n```javascript\nimport { setDomain } from './lib/api-client.js'\nsetDomain('http://localhost:3000/api')\n```\n\nImport API function into Vue.js component, for example to log in\n```javascript\nimport { user_login as userLogin } from '../lib/api-client.js'\n\nuserLogin({\n  credentials: {\n    username: 'admin',\n    password: 'admin'\n  }\n}).then(function (response) {\n  console.log(response.data) // {id: \"\u003ctoken\u003e\", ttl: 1209600, created: \"2017-01-01T00:00:00.000Z\", userId: 1}\n})\n```\nAll requests use **axios** module with promise, for more information about that follow axios documentation \n\n# Links\n - [swagger-js-codegen](https://github.com/wcandillon/swagger-js-codegen)\n - [axios](https://www.npmjs.com/package/axios)\n\n# License\n\n[MIT](https://opensource.org/licenses/MIT)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenweiqun%2Fswagger-vue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchenweiqun%2Fswagger-vue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenweiqun%2Fswagger-vue/lists"}