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.