Normativa front guia implementacion Scaffolding Vigente Versión: 1.0.0Estado: ACTIVOEntrada en vigor desde:Obligado cumplimiento desde: Sept-2023 | Normativa front guia implementacion Scaffolding PRE-RELEASE Versión: 1.0.0Estado: RELEASEEntrada en vigor desde:Obligado cumplimiento desde: - |
---|
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
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.
Este proyecto es un command line interface (cli) para node que pretende facilitar la creaci贸n de proyectos para el uso de web components con Lit y TypeScript. La estructura del proyecto, as铆 como la de sus elementos, son acordes a la normativa arquitect贸nica definida por las STIC.
Una vez descargado el proyecto, desde la ra铆z del mismo ejecutamos por consola:
foo@bar:~$ sas-cli <comando> [opción]
Contexto | Acci贸n | Comando | Opci贸n | Descripci贸n |
---|---|---|---|---|
app | Todas las acciones relativas a un proyecto de tipo aplicaci贸n | |||
create | app:create | creaci贸n de un proyecto de tipo aplicaci贸n | ||
clean | app:clean | limpia elementos temporales de la construcci贸n de la aplicaci贸n (out-ts, dist,back-up y coverage ) | ||
-a --all | limpia todo elemento que no sea parte del c贸digo fuente (elementos temporales, node_modules, package-lock.json) | |||
monorepo | Todas las acciones relativas a un proyecto de tipo monorepo. Este tipo de proyecto es el ideal para el desarrollo de componentes reutilizables y publicables (web-componentes, librer铆as) | |||
create | monorepo:create | Creaci贸n de un proyecto de tipo monorepo | ||
init | monorepo:init | Inicializa un monorepo existente creando los enlaces y las carpetas necesarias para los componentes existentes | ||
clean | monorepo:clean | Limpia elementos temporales de la generaci贸n del monorepo (types, dist,back-up y coverage ). Tambi茅n elimina los elementos temporales para los componentes creados en el proyecto | ||
-a --all | Limpia todo elemento que no sea parte del c贸digo fuente (elementos temporales, node_modules, package-lock.json). Tambi茅n elimina todo elemento que no sea parte del c贸digo fuente para los componentes creados en el proyecto | |||
WebComponent | Todas las acciones relativas a un componente de tipo webcomponent | |||
create | wc:create | Creaci贸n de un componente tipo webcomponent | ||
-d --dir | Crea el web componente en una carpeta concreta dentro de la carpeta package del monorepo. Admite profundidad (carpeta1/carpeta2/carpeta3 ... ) | |||
Librer铆a | Todas las acciones relativas a un componente de tipo librer铆a | |||
create | lib:create | Creaci贸n de un componente tipo librer铆a | ||
-d --dir | Crea la librer铆a en una carpeta concreta dentro de la carpeta package del monorepo. Admite profundidad (carpeta1/carpeta2/carpeta3 ... ) |
En esta secci贸n se van a abordar los siguientes tipos de proyectos que actualmente se proporcionan por sas-cli: monorepo y aplicaci贸n
El proyecto est谩 configurado para ser ejecutado como un monorepo, haciendo uso de la opci贸n workspace de npm a partir de la versi贸n 7.X. Puede albergar un cat谩logo de componentes reutilizables (WebComponents, librer铆as)
foo@bar:~$ sas-cli monorepo:<acción> [options]
foo@bar:~$ sas-cli monorepo:create
Esta opci贸n generar谩 un fichero (.sas-project.config) donde se almacenar谩 dicha informaci贸n de configuraci贸n
foo@bar:~$ sas-cli monorepo:init
Una vez creado el monorepo se proporciona los siguientes scripts:
Esta opci贸n es la que ejecutar谩 el ALM del SAS por defecto en la entrega del proyecto. Incluye los transpilados (.js), los types (d.ts) y los mappers (.js.map)
foo@bar:~$ npm run build
Opci贸n ideal para la versi贸n de desarrollo y al incluir un nuevo elemento en el proyecto (ej. un nuevo componente). Excluye los types de la carpeta de dist permitiendo hacer un hot-reload.
foo@bar:~$ npm run build:dev
Opci贸n ideal para cuando se quiera realizar una reconfiguraci贸n del proyecto en desarrollo. Se recomienda su ejecuci贸n antes de hacer el entregable para asegurarse que no hay ning煤n problema con una construcci贸n limpia (como se realizar谩 en el ALM del SAS)
foo@bar:~$ npm run build:clean:dev
Si se quiere consultar el cat谩logo de componentes desarrollado en el proyecto, se debe ejecutar:
foo@bar:~$ npm run storybook
Si se quiere generar un distributable para desplegar en un servidor de est谩ticos (nginx, apache), ejecutar:
foo@bar:~$ npm run storybook:build
Para m谩s detalle sobre el storybook revisar esta secci贸n
Si se quieren lanzar los test con su an谩lisis de cobertura de los test realizados para todo el cat谩logo de componentes desarrollado en el proyecto se debe ejecutar:
foo@bar:~$ npm run test:dev
Para m谩s detalle sobre el testing revisar esta secci贸n
Opci贸n para cuando se necesita informaci贸n m谩s detallada tanto en la compilaci贸n como en la transpilaci贸n
foo@bar:~$ npm run build:monorepo:debug
Para facilitar el cambio de las versiones de todos los componentes del proyecto, y mantener la coherencia del versionado, se proporcionan dos scripts de npm (uno para windows y otro para linux) para ejecutar
LINUX
foo@bar:~$ npm run version:set:linux --new_version=1.0.6
WINDOWS
foo@bar:~$ npm run version:set:windows --new_version=1.0.6
El proyecto est谩 configurado para ser ejecutado a partir de la versi贸n 7.X de npm.
La estructura de la aplicaci贸n generada mediante este CLI, siguen las directrices marcadas por el 谩rea de arquitectura de la STIC. La base tecnol贸gica es Lit (2.X) y TypeScript (4.x)
foo@bar:~$ sas-cli app:create
Esta opci贸n generar谩 un fichero (.sas-app.config) donde se almacenar谩 dicha informaci贸n de configuraci贸n
Para construir la app hay que a帽adir al package.json del proyecto, en la secci贸n script, lo siguiente, substituyendo <nombre_app> por su valor (app-<area_desarrollo>-<nombre_app>)
foo@bar:~$ npm run start:build
foo@bar:~$ npm run start
Para m谩s informaci贸n sobre el servidor de desarrollo de la aplicaci贸n propuesto revisar esta secci贸n
Si se quiere que la app cargue el theme:
A帽adir la dependencia del theme correspondiente al package.json del componente
Cargar en el index.html. Se recomienda revisar la propuesta hecha por la plantilla de la aplicaci贸n. Esta plantilla est谩 basada en la forma de implementar el theme de la stic.
Polyfills. En caso de que la aplicaci贸n deba ser compatible con IE11 se cargar谩n los polyfills necesarios en el index.html de la aplicaci贸n
Limpieza de todos los elementos generados durante la construcci贸n de la aplicaci贸n (out-ts, dist,back-up y coverage )
foo@bar:~$ sas-cli app:clean
Limpieza completa de todos los elementos generados durante la construcci贸n e instalaci贸n de la aplicaci贸n (temporales, node_modules)
foo@bar:~$ sas-cli app:clean -a
En esta secci贸n se van a abordar los dos tipos de proyectos que actualmente se proporcionan por sas-cli, monorepo y aplicaci贸n
Esta secci贸n abordar谩 las acciones que se pueden realizar sobre los componentes de tipo Web.
La estructura de los componentes generados mediante este CLI, siguen las directrices marcadas por el 谩rea de arquitectura de la STIC. La base tecnol贸gica es Lit (2.X) y TypeScript (4.x).
Se generar谩 un componente con la siguiente estructura en su nombre wc-<area_desarrollo>-<nombre_componente>.
foo@bar:~$ sas-cli wc:create <nombre_componente>
El componente se crear谩 en la carpeta packages (la determinada para almacenar el cat谩logo de componentes reutilizables).
Despu茅s de la creaci贸n de los componentes necesarios, para la correcta configuraci贸n del monorepo, se recomienda la ejecuci贸n del comando.
foo@bar:~$ npm run build:dev
Si se quiere montar una prueba de concepto de alg煤n componente se puede hacer uso de la carpeta demo.
Para lanzarla hay que a帽adir al package.json del proyecto, en la secci贸n script, lo siguiente, sustituyendo <nombre_componente> por su valor (Wc-<area_desarrollo>-<nombre_componente>)
"start:<nombre_componente>": "concurrently --kill-others --names tsc,web-dev-server \"npm run tsc:dev:watch\" \"web-dev-server --app-index packages/<nombre_componente>demo/index.html --node-resolve --open --watch\""
Una vez a帽adido el script se debe ejecutar, sustituyendo <nombre_componente> por su valor (Wc-<area_desarrollo>-<nombre_componente>), con
foo@bar:~$ npm run start:<nombre_componente>
Para m谩s informaci贸n sobre el servidor de lanzamiento de la demo propuesto revisar esta secci贸n
Si se quiere que el componente cargue el theme durante la ejecuci贸n de la demo:
A帽adir la dependencia del theme correspondiente al package.json del componente
Cargar en el index.html. Se recomienda revisar la propuesta hecha por la plantilla de los componentes. Esta plantilla est谩 basada en la forma de implementar el theme de la stic.
Esta secci贸n abordar谩 las acciones que se pueden realizar sobre los componentes de tipo Librer铆a.
La estructura de los componentes generados mediante este CLI, siguen las directrices marcadas por el 谩rea de arquitectura de la STIC. La base tecnol贸gica es Lit (2.X) y TypeScript (4.x).
Se generar谩 una librer铆a con la siguiente estructura en su nombre lib-<area_desarrollo>-<nombre_componente>.
foo@bar:~$ sas-cli lib:create <nombre_componente>
El componente se crear谩 en la carpeta packages (la determinada para almacenar el cat谩logo de librer铆as reutilizables).
Despu茅s de la creaci贸n de los componentes necesarios, para la correcta configuraci贸n del monorepo, se recomienda la ejecuci贸n del comando.
foo@bar:~$ npm run build:dev
Por la t茅cnica utilizada para la construcci贸n del monorepo (a trav茅s de symlinks) la opci贸n que se elija deben tener en cuenta y activada la opci贸n preserveSymlinks
Los navegadores no son compatibles con "bare" modules. Para solventar esto hay dos formas:
Nota: Por facilidad de configuraci贸n se propone y recomiendo el uso del web-dev-server
El fichero web-dev-server.config.mjs es el que contiene la configuraci贸n m铆nima propuesta.
Para ampliar la configuraci贸n consultar la informaci贸n
El proyecto en desarrollo se basa en el storybook de ModernWeb. Se ha elegido esta versi贸n customizada del storybook por ser m谩s ligera de cara al desarrollo. Este es un storybook basado en rollup y que limita algunas de las capacidades del storybook original.
Los componentes deben poder desplegarse en cualquiera de los dos storybook
Las configuraciones aplicadas est谩n basadas en el storybook original para WebComponents. Dichas configuraciones se encuentran en la carpeta ra铆z_.storybook_.
Algunas de las configuraciones extras que se pueden aplicar:
const excludeWCList = [ "stic-theme", "stic-button", ]
<script type="module"> import { STICTheme } from '@sas/wc-stic-theme'; new STICTheme().loadHeadStyles(); </script>
Por la t茅cnica utilizada para la construcci贸n del monorepo (a trav茅s de symlinks) la opci贸n que se elija debe tener en cuenta y activada la opci贸n preserveSymlinks.
Si se utiliza el storybook proporcionado por ModernWeb, se debe tener en cuenta que utiliza web-dev-server como servidor de arranque por lo que dicho servidor debe tener la configuraci贸n adecuada. Para m谩s informaci贸n revisar la secci贸n
Las plantillas del sas-cli en materia de testing est谩n adaptadas a los recursos y configuraci贸n proporcionados por ModernWeb. Es recomendable, pero no obligatorio, seguir el stack tecnol贸gico propuesto por ModernWeb. En caso de tener una propuesta alternativa se recomienda consultar con el departamento de arquitectura del sas
Cualquiera definici贸n o stack tecnol贸gico debe ser posible ejecutarlo dentro del ALM del SAS. Se recomienda validar la ejecuci贸n de pruebas en un entorno contenerizado.
Por la t茅cnica utilizada para la construcci贸n del monorepo (a trav茅s de symlinks) la opci贸n que se elijan debe tener en cuenta y activada la opci贸n preserveSymlinks.
El fichero web-test-runner.config.mjs es el que contiene la configuraci贸n m铆nima propuesta.
Para ampliar la configuraci贸n consultar esta informaci贸n
En esta secci贸n se describe una gu铆a b谩sica para actualizar el proyecto a la versi贸n actual del sas-cli.
Hay que seguir los siguientes pasos para realizaci贸n de la migraci贸n:
Se describen a continuaci贸n los pasos a dar para la migraci贸n del monorepo
En caso de no necesitar crear ning煤n componente nuevo, se recomienda crear un ficticio que permita comprobar los cambios propuestos y adecuar los componentes actuales a dichos cambios.
Revisar el demo/index.html para asegurarse de que las importaciones y el c贸digo se ajusta a los cambios una vez realizada la migraci贸n. Compararlo con el fichero propuesto. Verificar la carga del theme bas谩ndose en la propuesta y modificarla acorde al theme creado para el 谩rea o aplicaci贸n correspondiente.
Revisar el c贸digo de las stories y adecuarlos a los cambios propuestos.
En caso de disponer de una aplicaci贸n ya creada, se recomienda crear una ficticia que permita comprobar los cambios propuestos y adecuar los componentes actuales a dichos cambios.
Revisar el app/index.html para asegurarse de que las importaciones y el c贸digo se ajusta a los cambios una vez realizada la migraci贸n. Compararlo con el fichero propuesto.
Revisar la carga del theme bas谩ndose en la propuesta.