O pacote Stitches que o Flora utiliza possui diversas correções e melhorias não lançadas, apenas buildadas, inclusive compatbilidade com a versão do TypeScript mais recente. As issues relacionadas ao problema do TS aqui e aqui.
Nesse passo a passo ensino como você pode aproveitar essas melhorias e também corrigir o problema do TypeScript The type of this node cannot be serialized because its property '[$$PropertyValue]' cannot be serialized, que acontece quando queremos usar o TypeScript 4.8+ e exportar um componente de um arquivo, como pode ser visto na imagem a seguir.
Algumas threads já foram levantadas no Slack sobre a incopatibilidade
- https://grupoboticario-corp.slack.com/archives/C0199HR0543/p1689711403684349
- https://grupoboticario-corp.slack.com/archives/C0199HR0543/p1693941933740659
No seu package.json adicione a seguinte configuração. A versão 1.3.1-1 é o último build feito. O Flora atualmente utiliza a versão 1.2.8 que não é compatível com TypeScript 4.8+.
"overrides": {
"@stitches/react": "1.3.1-1"
},Agora você pode usar o TypeScript 4.8+ e exportar os componentes com styled normalmente.
Da pra contornar de certa forma o problema se criarmos um type gambiarra combinando alguns types do React, e usando a keyword as do TypeScript. A solução pode ser vista no arquivo abaixo StyledHtmlTable.tsx
Algumas questões atrapalham na etapa de build quando usamos a função styled do Stitches, e uma pequena alteração no código interno da biblioteca pode melhorar bastante o desempenho.
Em um projeto que trabalho o tempo de build estava em torno de 120s, e depois do patch aplicado caiu para 30s. Essa correção é uma cortesia do usuário jasonaden que compartilhou a solução em uma issue no repositório do stitches
Vou utilizar o pacote patch-package neste caso - mais info https://github.com/ds300/patch-package
Para fazer o patch do Stitches para a últma versão disponível e resolver problemas de performance com build, execute os seguintes passos:
No package.json adicione o seguinte comando:
"scripts": {
+ "postinstall": "patch-package"
}Logo após, instale o pacote pelo terminal
npm i -D patch-packageAgora procure pelo arquivo node_modules/@stitches/react/types/css-util.d.ts. Já com o arquivo aberto, procure pela linha 98 e comente
[K: string]: (
| number
| string
// | CSS<Media, Theme, ThemeMap, Utils>
| {}
| undefined
)Após a linha 100, adicione any
[K: string]: (
| number
| string
// | CSS<Media, Theme, ThemeMap, Utils>
| {}
| undefined
| any
)Por fim, rode o seguinte comando no terminal
npx patch-package @stitches/reactPronto, agora o build de um projeto com Flora/Stitches deve ficar mais rápido 💡

@danielnass incrível 🎉