Após revisar o repositório, tive uma ideia de compressão dos certificados e schemas que seria viável. Uma abordagem prática para reduzir o tamanho do bundle seria:
- Comprimir as pastas
certificates
eschemas
utilizandogzip
. - Usar a biblioteca
zlib
em Node.js para descompactá-los sob demanda, carregando cada schema ou certificado apenas quando necessário.
Essa abordagem deve reduzir o tamanho do pacote final, mantendo o desempenho.
Aqui está um exemplo prático para implementar a sugestão de compressão e lazy loading dos certificados e schemas:
-
Comprimir arquivos com
gzip
:- No terminal, comprima os arquivos na pasta
certificates
eschemas
:gzip -k ./certificates/*.pem ./schemas/*.xsd
- No terminal, comprima os arquivos na pasta
-
Descompactar sob demanda com
zlib
:- No código, use o módulo
zlib
para carregar e descomprimir quando necessário:
import zlib from 'zlib'; import fs from 'fs'; import path from 'path'; // Função para descomprimir e carregar arquivos const loadCompressedFile = (filePath) => { const compressedData = fs.readFileSync(`${filePath}.gz`); return zlib.gunzipSync(compressedData).toString('utf8'); }; // Exemplo de uso const schemaContent = loadCompressedFile(path.resolve(__dirname, './schemas/schema-name.xsd'));
- No código, use o módulo
-
Atualizar o Rollup para incluir apenas os arquivos comprimidos:
- Certifique-se de que o Rollup inclui os arquivos
.gz
para evitar duplicação e reduzir o tamanho final do bundle.
- Certifique-se de que o Rollup inclui os arquivos
Esse processo diminui o bundle inicial e carrega apenas o que for necessário para a comunicação com a SEFAZ, mantendo o desempenho.
O que acha? se falei besteira pode desconsiderar