Versiones comparadas

Clave

  • Se ha a帽adido esta l铆nea.
  • Se ha eliminado esta l铆nea.
  • El formato se ha cambiado.

Subdirecci贸n de las Tecnolog铆as de la Informaci贸n y Comunicaciones

脕rea de Gobernanza y Calidad

Table Excerpt Include
nameLOGO_JUNTA
merge-tablestrue
pageRecursos
typepage

Versi贸n

Table Excerpt Include
statictrue
copytabletrue
nameVERSION_NORM_FRONT_GUIA_IMP_DOCUM_WC
merge-tablestrue
pageNorm-front-toc
typepage

Tabla de Contenido


Tabla de contenidos
maxLevel5
indent20px
exclude.*(Versi贸n Actual|Cumplimiento Normativo|Hist贸rico de cambios|Subdirecci贸n de las Tecnolog铆as de la Informaci贸n y Comunicaciones|脕rea de Gobernanza y Calidad|Tabla de Contenido)

Cumplimiento Normativo


Advertencia

Las normas expuestas son de obligado cumplimiento. La STIC podr谩 estudiar los casos excepcionales los cuales ser谩n gestionados a trav茅s de los responsables del proyecto correspondiente y autorizados por el 脕rea de Gobernanza de la STIC. Asimismo cualquier aspecto no recogido en estas normas deber谩 regirse en primera instancia por las gu铆as t茅cnicas correspondientes al esquema nacional de seguridad y esquema nacional de interoperabilidad seg煤n correspondencia y en su defecto a los marcos normativos y de desarrollo software establecidos por la Junta de Andaluc铆a, debiendo ser puesto de manifiesto ante la STIC.

La STIC se reserva el derecho a la modificaci贸n de la norma sin previo aviso, tras lo cual, notificar谩 del cambio a los actores implicados para su adopci贸n inmediata seg煤n la planificaci贸n de cada proyecto.

En el caso de que alg煤n actor considere conveniente y/o necesario el incumplimiento de alguna de las normas y/o recomendaciones, deber谩 aportar previamente la correspondiente justificaci贸n fehaciente documentada de la soluci贸n alternativa propuesta, as铆 como toda aquella documentaci贸n que le sea requerida por la STIC para proceder a su validaci贸n t茅cnica.

Contacto Arquitectura: l-arquitectura.stic@juntadeandalucia.es

Hist贸rico de cambios


Los cambios en la normativa vendr谩n acompa帽ados de un registro de las modificaciones. De este modo se podr谩 realizar un seguimiento y consultar su evoluci贸n. Orden谩ndose de mas recientes a menos recientes, prestando especial cuidado a las cabeceras de la tablas d贸nde se indican las fechas de entrada en vigor y versi贸n.

Expandir
titleHist贸rico de cambios
Versi贸nPre-release聽Adopci贸nActivaRetiroAlcance
v01r00




  • Versi贸n inicial del documento

1. Introducci贸n

En el desarrollo de componentes web, as铆 c贸mo para cualquier elemento software orientado a la reutilizaci贸n, la correcta gesti贸n de la documentaci贸n es fundamental, de cara a su reaprovechamiento y mantenimiento. Esta guia define los aspectos b谩sicos a documentar en聽 la implementaci贸n de soluciones de front-end, teniedo en mente las siguientes cuestiones:

  • La documentaci贸n del desarrollo, compondr谩 y contendr谩 el contrato de articulaci贸n del componente, definiendose este como aquellas caracteristicas necesarias a definir para el correcto funcionamiento de la soluci贸in, as铆 como el conjunto de eventos esperables, que har谩n posible la interacci贸n entre los distintos componentes.
  • El modelo de documentaci贸n ser谩 expuesto a terceros mediante:
    • Storybook, soluci贸n de mockup y exposici贸n del sistema de dise帽o
    • JSDOC, soluci贸n documental b谩sica
    • README.md
  • Los mecanismos documentales abordados en esta guia, van orientados a reutilizar al m谩ximo la documentaci贸n provista en el propio c贸digo fuente.




2. Descripci贸n t茅cnica de la聽 soluci贸n

La soluci贸n se basa en la generaci贸n autom谩tica de una serie de descriptores, extray茅ndose de los comentarios definidos en el c贸digo fuente. Los ficheros generados de forma autom谩tica son:

  • custom-elements.json
  • Conjunto de ficheros que conforman la JSDOC.


Como se ha dicho en el punto 1, se deben generar los siguientes ficheros en los que se visualice nuestra documentaci贸n:

  • README.md: Fichero markdown con la informacion de la API del componente.
  • custom-element.json: Fichero en el que se basa toda la informaci贸n que aparecen en las PropsTables del addon DOCS de storybook.

La herramienta base para crear ambos ficheros es WCA (web-component-analyzer) , y se trata de un CLI que se integra en nuestro proyecto y con el que se analizan de manera sencilla los componentes para obtener la documentaci贸n en distintos formatos.

Una vez se generaron los ficheros con WCA, se observ贸 que la herramienta no agrupaba la documentaci贸n de los distintos tags que podr铆a tener en el componente, de modo que solo aparecia en el fichero README.md o en storybook el primero que analizase. Por ello, el departamento de arquitectura crea una herramienta llamada CustomElementMerger mediante la cual, con la salida del WCA, se obtiene:

  • Unir todas las tags generadas en el fichero custom-element.json en una sola.
  • En la pesta帽a DOCS del componente en storybook, a帽ade en la descripci贸n una serie de chips que nos llevaran a la documentaci贸n de las clases generada por JSDOC.

Por 煤ltimo se usar谩 la herramienta JSDOC, mediante la cual se analizar谩n los comentarios sobre el c贸digo fuente (JS) y se generar谩 autom谩ticamente una estructura de p谩ginas HTML que el desarrollador pueda seguir para observar la API del componente.




3. Instalaci贸n de聽 herramientas

La siguiente secci贸n aclara los pasos necesarios para instalar todas estas herramientas en nuestro proyecto y as铆 poder generar la documentaci贸n necesaria.

3.1 Consideraciones generales iniciales

  • Es importante aclarar que, de momento, una de las herramientas (CustomElementMerger) s贸lo funciona en linux por los scripts que se utilizan, as铆 que si nuestro sistema operativo es Windows se necesitar谩 ejecutarlo con WSL (Subsistema de Windows para Linux).
  • Otra consideraci贸n previa a la instalaci贸n de estas herramientas es que est谩n almacenadas en la DML del SAS, por lo que se se debe estar registrado en la misma previamente para poder descargarlas ( gu铆a de registro ).

3.2 Instalaci贸n

Desde consola, estando en la ra铆z del proyecto, se ejecutar谩 lo siguiente:

  • web-component-analyzer (WCA)
Bloque de c贸digo
npm install -g web-component-analyzer


  • CustomElementMerger (siempre usar la versi贸n m谩s actual de la herramienta en el momento de su instalaci贸n)
Bloque de c贸digo
npm install @sas/custom-element-merger@1.0.3


  • JSDOC
Bloque de c贸digo
npm install @sas/custom-element-merger@1.0.3

A parte de instalar este paquete, se ha de configurar para que haga lo que se necesita聽a nivel de documentaci贸n. Para ello descargar el siguiente fichero (.jsdoc.zip) y descomprimir en la ra铆z del proyecto.

El contenido de este fichero es una carpeta (.jsdoc) cuyo contenido es el siguiente:

Los ficheros que contiene el archivo zip son los siguientes:

  • .jsdoc.config.json: Contiene toda la configuraci贸n de la herramienta. Toda la informaci贸n acerca de este fichero, su generaci贸n y sus distintas secciones, se podr谩 encontrar aqu铆.
  • README.md: Fichero markdown con las cabeceras personalizadas para incluir en el fichero ra铆z del JSDOC (index.html).
  • plugins/cssprop.js: C贸digo a帽adido al JSDOC para que pueda analizar y documentar el tag @cssprop dentro de todos los ficheros que se analicen.




4. C贸mo realizar correctamente la documentaci贸n del WC

El objetivo de esta secci贸n es facilitar al desarrollador el modo de realizar los comentarios dentro del c贸digo fuente del WC para que dichos comentarios puedan ser parseados por WCA (para storybook) y por JSDoc (HTML Doc) y que generen la documentaci贸n necesaria en cada uno de sus sistemas. Se intentar谩 unificar de una manera l贸gica todos los comentarios para que estos sean lo mas precisos posibles dentro del modelo Model-View-ViewModel de la manera que se explica a continuaci贸n:

4.1 Consideraciones generales iniciales

Observaciones previas que toda documentaci贸n de componentes debe cumplir:

  • Dentro de la vista se deber谩 definir el nombre con el que se referenciar谩 al componente de la siguiente manera:
Bloque de c贸digo
window.customElements.define("<nombre-componente>", <ClaseViewDelComponente>);

y siempre como 煤ltima l铆nea del documento. No se deber谩 hacer nunca con el decorador @customElement :


  • Para que el storybook tome del custom-element.json la documentaci贸n y la adapte a las PropsTables del addon DOCS, a帽adir a .storybook/preview.js el siguiente c贸digo:
Bloque de c贸digo
import { setCustomElementsManifest } from '@storybook/web-components';
import customElements from '../custom-elements.json';

setCustomElementsManifest(customElements);
  • A帽adir a las stories de los distintos componentes:
Bloque de c贸digo
export default {
  title: 'Nombre de la story',
  component: 'nombre-componente', // El que se encuentra tambi茅n como nombre en el fichero `custom-elements.json`
};


4.2 Tags disponibles para la generaci贸n de comentarios

La siguiente tabla incluye todos los tags disponibles para comentar el c贸digo fuente:

TagDefinici贸nScopeVisible enEjemplo
@element Se usa para asociar el nombre del componente con la聽documentaci贸n

Ficheros View, ViewModel, CSS

Storybook
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
/**
*
* @element my-custom-element
*

@file

Se utiliza para indicar una descripci贸n del ficheroTodos los ficherosJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
/**
*
* @file <shortFileDescription>
*
@author Se usa para identificar el autor de un fichero o elementoTodos los ficherosJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @author <authorName> [<authorEmail>]
*
@version Se usa para documentar la versi贸n de un fichero o elementoTodos los ficherosJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @version <versionNumber>
*
@class Se usa para identificar una claseTodos los ficheros que incluyan clasesJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @class [<type>] [<name>]
*
@classdesc Se usa para dar la descripci贸n de una clase, y suele usarse en combinaci贸n con el tag @class (o @constructor)Todos los ficheros que incluyan clasesJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @class [<type>] [<name>]
* @classdesc <classDescription>
*

NOTA: Para usar @classdesc es obligatorio haber definido el tag聽@class previo a este

@extends Se usa para indicar que un elemento hereda de otro elemento padreTodos los ficheros que incluyan clases y extiendan de otra clase padreJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @extends <namepath>
*
@interface Se usa para documentar una interfaz que otros elementos podr铆an implementarFicheros Model, ViewModel, Utils o ficheros de interfazJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @interface [<name>]
*
@function Se usa para marcar un elemento como funci贸n o m茅todoFicheros Model, ViewModel y UtilsJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @function [<functionName>]
*
@param Se usa para establecer nombre, tipo y descripci贸n de un par谩metro de una funci贸nFicheros Model, ViewModel y Utils con par谩metros definidos dentro de las funcionesJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @param [{type}] <name> [- <description>]
*
@return Se usa para describir el tipo y resultado devuelto por una funci贸n o m茅todoFicheros Model, ViewModel y Utils con funciones que devuelvan alg煤n resultadoJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @return [{type}] [<description>]
*
@static Se usa para indicar que un elemento esta contenido en su elemento padre y puede ser accedido sin crear una instancia del padreTodos los ficheros que definan elementos est谩ticosJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @static
*
@protectedSe usa para indicar que un elemento es protegidoTodos los ficheros que definan elementos protegidosJSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @protected
*
@fires Se usa para documentar eventosFicheros Model, ViewModel y UtilsStorybook y JSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @fires <name> [- <description>]
*
@slot Se usar para documentar slots (谩rea dentro del componente que permite la inyecci贸n de HTML)Ficheros Model, ViewModelStorybook
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @slot <name> [%- <description>]
*
@attr Se usa para documentar los atributos (propiedades internas al componente - Internal properties) del componenteTodos los ficheros que definan atributos sobre algunos de sus elementosStorybook y JSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleComplex property doc example
/**
* Attribute description
* @attr [{type}] attrTest[=defaultValue] - Attribute description
**/
attrTest=defaultvalue
@prop Se usa para documentar las propiedades (propiedades expuestas al exterior a trav茅s de la API) del componenteTodos los ficheros que definan propiedades sobre algunos de sus elementosStorybook y JSDOC
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
/**
* Property description
**/
@property({type:propertyType}) propName=defaultvalue
Bloque de c贸digo
languagejs
themeMidnight
titleComplex property doc example
/**
* Property description
* @prop [{propertyType}] propName[=defaultValue] - Property description
**/
@property({type:propertyType}) propName=defaultvalue
@cssprop Se usa para documentar las propiedades custom CSS del componenteFicheros CSSStorybook
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @cssprop --<name>=[defaultValue] [- <description>]
*
@csspart Se usa para documentar CSS shadow parts (谩reas que permiten el uso de propiedades CSS dentro del shadow dom) del componenteFicheros CSSStorybook
Bloque de c贸digo
languagejs
themeMidnight
titleSimple property doc example
*
* @cssprop <name>
*

IMPORTANTE:

  • Dentro de la documentaci贸n, siempre que se usen los tags @attr o @prop y se quiera definir su tipo con {type}, este siempre deber谩 escribirse en min煤sculas, aunque el tipo sea una clase (Boolean - boolean). Solo se admitir谩 CamelCase en el caso que el tipo sea un Literal Type.

NOTA: Para los ejemplos, indicar:

  • Los s铆mbolos聽de mayor y menor que < > se usan para delimitar los elementos, es decir, para indicar que se necesita un nombre <name> o una descripci贸n <description>.
  • Si un elemento est谩 entre corchetes [ ] indica que dicho elemento es opcional - por ejemplo, en @fires <name> [- <description>] <name> es obligatorio y <description> es opcional -.
  • Las llaves se usan para definir elementos determinados que los generadores de documentaci贸n聽puedan interpretarlos como tal - por ejemplo el tipo de un elemento {type} siempre se define entre llaves.

4.3 Estructura de los comentarios dentro de los ficheros

  • Siempre se dispondr谩n los comentarios con la siguiente estructura para ficheros Typescript o Javascript:

A nivel de ejemplo, la estructura global de los comentarios dentro聽 del fichero ser谩 la siguiente:

Bloque de c贸digo
/**
* @file STIC Button, Patron MVVM -> View
*
* @author STIC Arquitectura
*
* @version 0.0.3
*/

import { html } from 'lit-element';
import { ButtonTheme } from './css/ButtonTheme.css';
import '@material/mwc-button';
import '@material/mwc-icon';
import { WcSticButtonViewModel } from './WcSticButtonViewModel';

/**
*
* @element wc-stic-button
*
* @class WcSticButtonView
* 
* @classdesc La Vista define c贸mo la informaci贸n y las funcionalidades se mostrar谩n gr谩ficamente.<br>
* Tiene la responsabilidad de definir la estructura que saldr谩 de la pantalla del componenete WCSticButton.
* 
* @extends WcSticButtonViewModel
*/
export class WcSticButtonView extends WcSticButtonViewModel {

static getStyles() {
  return [ButtonTheme.buttonTheme];
}

render() {
  return html`
    <mwc-button 
      .label=${this.label} .icon=${this.icon} ?trailingIcon=${this.trailingIcon}
      ?disabled=${this.disabled} ?dense=${this.dense} ?fullwidth=${this.fullwidth}
      ?outlined=${this.outlined} ?raised=${this.raised} ?unelevated=${this.unelevated}></mwc-button>
    `;
  }
}

window.customElements.define('wc-stic-button', WcSticButtonView);


Y dentro de esta estructura, profundizando sobre cada uno de sus elementos:

  • Se deber谩 incluir un bloque de comentarios al inicio del mismo para describir su contenido y caracter铆sticas globales del mismo:
Bloque de c贸digo
/**
* @file <descripci贸n a alto nivel del fichero>
*
* @author <nombreAutor>
*
* @version <versionFichero> (versionado sem谩ntico)
*/

comentario que se situar谩 en la primera l铆nea del fichero y llegar谩 hasta la l铆nea anterior de los imports.


  • En todos los ficheros que incluyan documentaci贸n para incluir en storybook se deber谩 incluir el siguiente bloque de comentarios OBLIGATORIO:
Bloque de c贸digo
/**
* Definici贸n del componente (puede ser multil铆nea)
*
* @element [nombre-customElement-componente] (Nombre que se le da al componente en la definici贸n del customElement)
*
*/


ya que con聽@element se asocia el nombre del customElement de ese componente a la documentaci贸n que aparece en el storybook.

Este bloque de comentarios vendr谩 a continuaci贸n de los imports y, por norma general, llegar谩 hasta la definici贸n de la clase exportada del fichero.

Es importante aclarar que el bloque de comentarios anterior y el bloque de comentarios de definici贸n de la clase HAN DE SER UN 脷NICO BLOQUE DE COMENTARIOS (por necesidades de los parseadores de documentaci贸n WCA y JSDOC), de modo que, por ejemplo, quedar铆a de la siguiente manera:

Bloque de c贸digo
/**
*
* @element wc-stic-button
*
* @class WcSticButtonView
* 
* @classdesc La Vista define c贸mo la informaci贸n y las funcionalidades se mostrar谩n gr谩ficamente.<br>
* Tiene la responsabilidad de definir la estructura que saldr谩 de la pantalla del componenete WCSticButton.
* 
* @extends WcSticButtonViewModel
*/


y, bajo ning煤n concepto, podr铆a quedar as铆:

Bloque de c贸digo
/**
*
* @element wc-stic-button
*
*/

/**
*
* @class WcSticButtonView
* 
* @classdesc La Vista define c贸mo la informaci贸n y las funcionalidades se mostrar谩n gr谩ficamente.<br>
* Tiene la responsabilidad de definir la estructura que saldr谩 de la pantalla del componenete WCSticButton.
* 
* @extends WcSticButtonViewModel
*/


  • Para todas elementos de las tags que se han definido en el punto 4.2, siempre llevar谩n un comentario justo en la l铆nea de encima del mismo, comentario que incluir谩 una descripci贸n del elemento y todas las tags que deban usarse para comentar el mismo.

Por ejemplo, dentro del ViewModel, donde se definen聽las propiedades:

Bloque de c贸digo
/**
* @prop {string} label - Texto del bot贸n.
*/
@property()
protected label: string = "";


  • En caso que se necesite documentar alg煤n elemento que no est茅 impl铆cito en el c贸digo fuente, se definir谩 el elemento dentro del bloque de comentarios con la definici贸n del componente y el @element (por ejemplo).
Bloque de c贸digo
/**
*
* @element wc-stic-button
*
* @prop {string} [variant=primary] - Permite seleccionar el conjunto de valores "primarios" o "secundarios" mediante el selector de clases definido a tal efecto.
* 
* @cssprop [--stic-button-background=--theme-color-background] - Color de superficie del bot贸n.
*
*/




5. Scripts en package.json para automatizar su uso

Una vez instaladas las herramientas (punto 3) y documentados los componentes (punto 4) se crear谩n una serie de scripts en el archivo package.json de la ra铆z del proyecto para automatizar la generaci贸n de documentaci贸n.

Estos scripts se generar谩n dentro del package.json del storybook de desarrollo de monorepo en que se est谩 trabajando.

Dentro del fichero package.json se han creado los elementos dentro de la secci贸n scripts:

Bloque de c贸digo
languagetext
"jsdoc:generate:docs": "jsdoc --configure .jsdoc/.jsdoc.config.json --verbose"

"storybook:generate:docs": "wca analyze sas/**/dist/src/** --outFile ./custom-elements.json && wcamerger --inputFile 'custom-elements.json' --outputFile 'custom-elements.json' --makeJsDocsChips --jsdocURI 'http://storybook.dev.alm.sas.junta-andalucia.es/storybook/docs'"

"storybook": "npm run storybook:generate:docs && npm run jsdoc:generate:docs && start-storybook -p 6006"

Estos scripts son la para la parte del run storybook (dev), mientras que los siguientes:

Bloque de c贸digo
languagetext
"build-storybook": "npm run storybook:generate:docs && build-storybook --modern"

"build": "npm run jsdoc:generate:docs && npm run build-storybook"

Son para el build de storybook y su generaci贸n de ficheros est谩ticos.

En un an谩lisis m谩s pormenorizado de los scripts:

Bloque de c贸digo
languagetext
"jsdoc:generate:docs": "jsdoc --configure .jsdoc/.jsdoc.config.json --verbose"

Este primer script genera toda la documentaci贸n mediante la herramienta JSDOC. Se usan los siguientes flags:

  • --configure: Sirve para indicar d贸nde se encuentra el fichero de configuraci贸n personalizado de JSDOC.
  • --verbose: Sirve para observar por consola, durante el proceso de generaci贸n de la documentaci贸n, todos los mensajes que indique la herramienta.

Esto nos genera una carpeta jsdocs en la raiz del proyecto mediante la cual se puede ver toda la documentaci贸n generada por la herramienta. Para ello (de manera local) se puede abrir el fichero index.html (Home) dentro de esta carpeta y navegar por la documentaci贸n. A modo ejemplo esta es una captura de la documentaci贸n generada por JSDOC en el storybook de DEV:


Bloque de c贸digo
languagetext
"storybook:generate:docs": "wca analyze sas/**/dist/src/** --outFile ./custom-elements.json && wcamerger --inputFile 'custom-elements.json' --outputFile 'custom-elements.json' --makeJsDocsChips --jsdocURI 'http://storybook.dev.alm.sas.junta-andalucia.es/storybook/docs'"

Este segundo script une las herramientas WCA y CEM de la siguiente manera:

  • La primera parte del script (wca analyze sas/**/dist/src/** --outFile ./custom-elements.json) utiliza WCA para generar toda la documentaci贸n en el fichero custom-element.json, cuya ruta de salida se indica a trav茅s del flag (--outFile).
  • La segunda parte del script (wcamerger --inputFile 'custom-elements.json' --outputFile 'custom-elements.json' --makeJsDocsChips --jsdocURI 'http://storybook.dev.alm.sas.junta-andalucia.es/storybook/docs') usa CEM y utiliza los siguientes flags:
    • --inputFile: Indica cual es el fichero de entrada a analizar
    • --outputFile: Indica cual es el fichero de salida con las tags mergeadas.
    • --makeJsDocsChips: Genera, en la descripci贸n del componente dentro del addon DOCS de storybook, unas chips enlazadas con la documentaci贸n de las clases generada por JSDOC.
    • --jsdocURI 'http://storybook.dev.alm.sas.junta-andalucia.es/storybook/docs': Se indica, para las chips generadas, cual sera la URI de todos los elementos generados por JSDOC. Como ejemplo, se ha puesto la URI del storybook de DEV, pero si se quiere ejecutar de manera local se podr铆a hacer con (http://localhost:6006/docs/).


Bloque de c贸digo
languagetext
"storybook": "npm run storybook:generate:docs && npm run jsdoc:generate:docs && start-storybook -p 6006"

Este tercer script sirve para ejecutar los dos scripts anteriores y lanzar el storybook de manera local, con lo que una vez finalizada su ejecuci贸n, si se accede a un componente, en la pesta帽a DOCS del mismo aparecer谩 toda la documentaci贸n generada por WCA y CEM en el fichero custom-elements.json, si como las chips de las clases generadas por JSDOC:



Destacando los chips de la parte superior :


Y tambi茅n la zona de documentaci贸n de la API (imagen parcial) :

En la que se puede聽ver c贸mo se integra en Storybook toda la documentaci贸n generada por WCA en el fichero custom-element.json y que posteriormente se une para todas las TAGS del componente a trav茅s de CustomElementMerger .




6. Enlaces de inter茅s