Package Exports
- vue-docgen-api
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (vue-docgen-api) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
vue-docgen-api
vue-docgen-api
is a toolbox to help extracting information from Vue components, and generate documentation from it.
Use babel and jsdoc-api to compile the code and analyze the contents of the component extracting methods and props. The output is a JavaScript object.
Install
Install the module directly from npm:
npm install vue-docgen-api --save-dev
API
The tool can be used programmatically to extract component information and customize the extraction process:
var vueDocs = require('vue-docgen-api');
var componentInfo = vueDocs.parse(filePath);
Using JSDoc tags
You can use the following JSDoc tags when documenting components, props and methods.
PropTypes
Example
For the following component
<template>
<table class="grid">
<thead>
<tr>
<th v-for="key in columns"
@click="sortBy(key)"
:class="{ active: sortKey == key }">
{{ key | capitalize }}
<span class="arrow" :class="sortOrders[key] > 0 ? 'asc' : 'dsc'">
</span>
</th>
</tr>
</thead>
<tbody>
<tr v-for="entry in filteredData">
<td v-for="key in columns">
{{entry[key]}}
</td>
</tr>
</tbody>
</table>
</template>
<script>
import { text } from './utils';
/**
* This is an example of creating a reusable grid component and using it with external data.
* @version 1.0.5
* @author [Rafael](https://github.com/rafaesc92)
* @since Version 1.0.1
*/
export default {
name: 'grid',
props: {
/**
* object/array defaults should be returned from a factory function
* @version 1.0.5
* @ignore
* @since Version 1.0.1
* @see See [Wikipedia](https://en.wikipedia.org/wiki/Web_colors#HTML_color_names) for a list of color names
* @link See [Wikipedia](https://en.wikipedia.org/wiki/Web_colors#HTML_color_names) for a list of color names
*/
msg: {
type: [String, Number],
default: 'Ejemplo'
},
/**
* describe data
*/
data: [Array],
/**
* get columns list
*/
columns: [Array],
/**
* filter key
*/
filterKey: {
type: String,
default: 'example'
}
},
data () {
var sortOrders = {}
this.columns.forEach(function (key) {
sortOrders[key] = 1
})
return {
sortKey: '',
sortOrders: sortOrders
}
},
computed: {
filteredData: function () {
var sortKey = this.sortKey
var filterKey = this.filterKey && this.filterKey.toLowerCase()
var order = this.sortOrders[sortKey] || 1
var data = this.data
if (filterKey) {
data = data.filter(function (row) {
return Object.keys(row).some(function (key) {
return String(row[key]).toLowerCase().indexOf(filterKey) > -1
})
})
}
if (sortKey) {
data = data.slice().sort(function (a, b) {
a = a[sortKey]
b = b[sortKey]
return (a === b ? 0 : a > b ? 1 : -1) * order
})
}
return data
}
},
filters: {
capitalize: function (str) {
return str.charAt(0).toUpperCase() + str.slice(1)
}
},
methods: {
/**
* Sets the order
*
* @public
* @version 1.0.5
* @since Version 1.0.1
* @param {string} key Key to order
* @returns {string} Test
*/
sortBy: function (key) {
this.sortKey = key
this.sortOrders[key] = this.sortOrders[key] * -1
},
hiddenMethod: function(){}
}
}
</script>
<style scoped>
.grid {
margin-bottom: 20px;
}
</style>
we are getting this output:
{
"description": "This is an example of creating a reusable grid component and using it with external data.",
"methods": [
{
"name": "sortBy",
"comment": "/**\n\t * Sets the order\n\t *\n\t * @public\n\t * @version 1.0.5\n\t * @since Version 1.0.1\n\t * @param {string} key Key to order\n\t * @returns {string} Test\n\t */",
"modifiers": [],
"params": [
{
"name": "key",
"description": "Key to order",
"type": {
"name": "string"
}
}
],
"returns": {
"description": "Test",
"type": {
"name": "string"
}
},
"description": "Sets the order",
"tags": {
"access": [
{
"title": "access",
"description": "public"
}
],
"description": [
{
"title": "description",
"description": "Sets the order"
}
],
"kind": [
{
"title": "kind",
"description": "function"
}
],
"name": [
{
"title": "name",
"description": "sortBy"
}
],
"params": [
{
"title": "param",
"description": "Key to order",
"name": "key",
"type": {
"type": "NameExpression",
"name": "string"
}
}
],
"returns": [
{
"title": "returns",
"description": "Test",
"type": {
"type": "NameExpression",
"name": "string"
}
}
],
"since": [
{
"title": "since",
"description": "Version 1.0.1"
}
],
"version": [
{
"title": "version",
"description": "1.0.5"
}
]
}
}
],
"displayName": "Grid",
"props": {
"filterKey": {
"type": {
"name": "string"
},
"required": "",
"defaultValue": {
"value": "\"example\"",
"computed": false
},
"tags": {
"description": [
{
"title": "description",
"description": "filter key"
}
],
"kind": [
{
"title": "kind",
"description": "member"
}
],
"name": [
{
"title": "name",
"description": "filterKey"
}
]
},
"comment": "/**\n * filter key\n */",
"description": "filter key"
}
},
"comment": "/**\n * This is an example of creating a reusable grid component and using it with external data.\n * @version 1.0.5\n * @author [Rafael](https://github.com/rafaesc92)\n * @since Version 1.0.1\n */",
"tags": {
"author": [
{
"title": "author",
"description": "[Rafael](https://github.com/rafaesc92)"
}
],
"description": [
{
"title": "description",
"description": "This is an example of creating a reusable grid component and using it with external data."
}
],
"kind": [
{
"title": "kind",
"description": "member"
}
],
"since": [
{
"title": "since",
"description": "Version 1.0.1"
}
],
"version": [
{
"title": "version",
"description": "1.0.5"
}
]
}
}