components-helper
Based on the documents to provide code prompt files for vue component library
Reference documents format reference test files
Changelog
Installation
yarn add components-helper -D
npm i components-helper --save-dev
Usage
const { main } = require('components-helper')
main({
})
example
then in package.json
{
"scripts": {
+ "build:helper": "node helper/file.js"
},
+ "vetur": {
+ "tags": "config outDir/tags.json",
+ "attributes": "config outDir/attributes.json"
+ },
+ "web-types": "config outDir/web-types.json"
}
Options
TOC
- [entry (required)](#entry)
- [outDir (required)](#outdir)
- [name (required)](#name)
- [version (required)](#version)
- [space](#space)
- [separator](#separator)
- [reComponentName](#recomponentname)
- [reDocUrl](#redocurl)
- [reAttribute](#reattribute)
- [reVeturDescription](#reveturdescription)
- [reWebTypesSource](#rewebtypessource)
- [reWebTypesType](#rewebtypestype)
- [tags](#tags)
- [attributes](#attributes)
- [webTypes](#webtypes)
- [props](#props)
- [propsName](#propsname)
- [propsDescription](#propsdescription)
- [propsType](#propstype)
- [propsOptions](#propsoptions)
- [propsDefault](#propsdefault)
- [events](#events)
- [eventsName](#eventsname)
- [eventsDescription](#eventsdescription)
- [slots](#slots)
- [slotsName](#slotsname)
- [slotsDescription](#slotsdescription)
- [slotsSubtags](#slotssubtags)
- [directives](#directives)
- [directivesName](#directivesname)
- [directivesDescription](#directivesdescription)
- [directivesType](#directivestype)
- [titleRegExp](#titleregexp)
- [tableRegExp](#tableregexp)
- [fileNameRegExp](#filenameregexp)
entry
- Required:
true
- Type:
string
entry path, refer: fast-glob
for example:
docs/*.md
-- matches all files in the docsdocs/(a|b).md
-- matches files a.md
and b.md
docs/!(a|b).md
-- matches files except for a.md
and b.md
outDir
- Required:
true
- Type:
string
outDir path, For example lib
name
- Required:
true
- Type:
string
name of the component library.
version
- Required:
true
- Type:
string
the version of the component library.
space
Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read
separator
the separator for propsOptions, slotsSubtags, type ...
reComponentName
- Type:
(title: string, fileName: string, path: string) => string
- Defult:
hyphenate(title || fileName)
rewriting the name of the component
for example (title) => 'prefix-' + title.replace(/\B([A-Z])/g, '-$1').toLowerCase()
reDocUrl
- Type:
(fileName: string, header?: string, path: string) => string | undefind
rewriting the doc url of the component
reAttribute
- Type:
(value: string, key: string, row: string[], title: string) => string | undefined
arg
- value: current value
- key: the key value of the current column
- row: all values of the current row
- title: the title of current tabel
rewriting the attribute of the component
reVeturDescription
- Type:
(description?: string, defaultValue?: string, docUrl?: string) => string
- Default: same like
${description}, default: ${defaultValue}.\n\n[Docs](${docUrl})
rewriting the description of vetur
reWebTypesSource
- Type:
(title: string, fileName: string, path: string) => Source
rewriting the source of web-types. (the name of export from the component library)
reWebTypesType
- Type:
(type: string) => undefined | string | BaseContribution
Only some common types are processed internally, and the rest are exported from the component library by default. If your document also references types in third-party libraries, you can choose to override the relevant behavior through this function
tags
- Type:
string
- Default:
tags.json
name for tags of the vetur
attributes
- Type:
string
- Default:
attributes.json
name for attributes of the vetur
webTypes
- Type:
string
- Default:
web-types.json
name for web-types of the webstrom
props
- Type:
string
(This is a regular string and ignores case.) - Default:
props
name of props table. other string in the header will be identified as sub-component
propsName
- Type:
string
- Default:
Name
name for the props header name
propsDescription
- Type:
string
- Default:
Description
name for props header description
propsType
- Type:
string
- Default:
Type
name for props header type
propsOptions
- Type:
string
- Default:
Options
name for props header options
propsDefault
- Type:
string
- Default:
Default
name for props header default
events
- Type:
string
(This is a regular string and ignores case.) - Default:
events
name of events table. other string in the header will be identified as sub-component
eventsName
- Type:
string
- Default:
Name
name for the events header name
eventsDescription
- Type:
string
- Default:
Description
name for events header description
slots
- Type:
string
(This is a regular string and ignores case.) - Default:
slots
name of slots table. other string in the header will be identified as sub-component
slotsName
- Type:
string
- Default:
Name
name for the slots header name
slotsDescription
- Type:
string
- Default:
Description
name for slots header description
slotsSubtags
- Type:
string
- Default:
Subtags
name for slots header subtags
directives
- Type:
string
(This is a regular string and ignores case.) - Default:
directives
name of directives table. other string in the header will be identified as sub-component
directivesName
- Type:
string
- Default:
Name
name for the directives header name
directivesDescription
- Type:
string
- Default:
Description
name for directives header description
directivesType
- Type:
string
- Default:
Type
name for directives header type
titleRegExp
- Type:
RegExp
| string
(This is a regular string.) - Default:
/#+\s+(.*)\n+([^(#|\n)]*)/g
matches the title and description information from docs
tableRegExp
- Type:
RegExp
| string
(This is a regular string.) - Default:
/#+\s+(.*)\n+(\|?.+\|.+)\n\|?\s*:?-+:?\s*\|.+((\n\|?.+\|.+)+)/g
matches the title and table header and the table contains information from docs
fileNameRegExp
- Type:
RegExp
| string
(This is a regular string.) - Default:
/\/((\w|-)+)\.\w+$/
matches the file name from the path
Advancement
about titleRegExp
matches the first format information in the docs
/#+\s+(.*
)\n+([^(#|\n)]*
)/
and
## title
matches other formats, For example:
/#+\s+(.*
)\n+>\s*([^(#|\n)]*
)/g
about tableRegExp
matches the format information in the docs
/#+\s+(.*
)\n+(\|?.+\|.+
)\n|?\s*:?-+:?\s*|.+((\n\|?.+\|.+)+
)/g
###
title
| header |
| ------ |
| column |
| column |
and
###
sub-component title
| header |
| :----- |
| column |
| column |
by default matches all tables, Optimize it through tableRegExp, For example:
/#+\s+(.*\s*Props|.*\s*Events|.*\s*Slots|.*\s*Directives
)\n+(\|?.+\|.+
)\n|?\s*:?-+:?\s*|.+((\n\|?.+\|.+)+
)/g
###
Props | Events | Slots | Directives
| header |
| ------ |
| column |
| column |
and
###
sub-component Props
| header |
| ------ |
| column |
| column |
other
When this document does not include the primary title or Props
Events
Slots
and Directives
, this component is not created.
License
MIT