Core Components
Como reaproveitar melhor os seus componentes
Por quê ter uma base de código unificada?
Melhor reaproveitamento do código
Padronização do código
Códigos mais concisos e 'amadurecidos'
Facilidade de manutenção
Velocidade de criação de novos apps
Como podemos criar uma base de código?
Com uma estrutura de componentes, serviços, e temas com um monorepo!
E por quê um criar um monorepo?
Os pacotes irão ficar unificados
Sem a necessidade de fazer múltiplas publicações para testar
Fácil comunicação entre os pacotes
Técnologias usadas no monorepo
Lerna
Yarn workspaces
Rollup
Lerna
Únifica o node_modules dos pacotes
Expoe comandos para a públicação dos pacotes
Gerencia quais pacotes vão ser publicados/buildados
Por quê Yarn workspaces junto com o lerna?
Yarn workspaces traz ainda mais recursos para o lerna
Rollup
O Roolup é responsável pelo build dos chunks dos pacotes!
Pacotes
Apps
Libs
Apps (não é publicado!)
Possui um mobile e um app web para teste dos pacotes(libs)
Libs
Components
Services
Themes
_Babel(Custom babel configs)
_Rollup(Custom babel configs)
Components
Mobile
Shared(styles)
Web
Atomic design
Prós
Separação dos componentes
Facilidade na estilização
Componentes mais inteligentes e genéricos
Maior facilidade nos testes
Atomic design
Contras
Necessita de uma maior abstração
Componentes mais complexos e genéricos
Shared styles
Compartilha somente o que é realmente necessário entre plataformas
Da uma maior liberdade para a criação dos componentes focados nas plataformas
Services
Possui todas as funções e hooks compartilhados entre os projetos
Aqui podemos ter custom hooks para facilitar o desenvolvimento dos apps!
Themes
Aqui podemos criar temas por projetos
_Babel
Possui todas as configurações necessarias para o build compartilhada entre os pacotes
_Rollup
Configurações necessarias para o build dos pacotes