Migração para Deno para reduzir o tamanho da compilação de aplicativos Electron

Computing/Software4분 읽기

TuBrief 편집팀 원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다. 원본 영상: O Deno Desktop pode tornar seus aplicativos 70% menores · Better Stack

Adeus aos arquivos de distribuição gigantes

Distribuir centenas de megabytes de binários do Chromium cada vez que um aplicativo Electron é executado é ineficiente. Para um desenvolvedor solo, o tamanho do arquivo de distribuição está diretamente ligado à taxa de instalação. O Deno Desktop utiliza a webview nativa do sistema operacional. É possível reduzir um aplicativo de 180MB para o nível de 19MB. Não se trata apenas de uma mudança técnica, mas de um trabalho para aliviar o peso do ambiente operacional.

Checklist do sprint de migração

Para finalizar a refatoração em 10 dias, é preciso abandonar a estrutura existente.

  • Em vez de dependências complexas no package.json, use deno.lock para simplificar o sistema de gerenciamento de cache.
  • Remova ferramentas pesadas como electron-builder e asar, e configure o mecanismo de compilação interno do Deno.
  • Exclua as camadas de comunicação ipcMain e ipcRenderer e consolide o controle do processo com o método win.bind().

Ao concluir este trabalho, você pode reduzir o tempo do processo de compilação em 40%.

Controlando as diferenças de webview por plataforma

Mac, Windows e Linux possuem mecanismos web diferentes. WKWebView e WebView2 apresentam resultados de renderização distintos. Até mesmo a forma de interpretar a especificação CSS é diferente. Especialmente o antigo WebKitGTK do Linux frequentemente quebra o layout.

Para reduzir a sensação de inconsistência entre plataformas, é necessário inserir scripts de correção no pipeline de distribuição.

  1. Force as margens padrão de todos os navegadores para 0 com um código de reset CSS.
  2. No estágio de bootstrap, chame bindings.getPlatformMetadata() para determinar o sistema operacional em execução.
  3. No macOS, ao usar o modo sem bordas (frameless), reserve uma margem de 28px de altura com uma div envolvente para acomodar a área dos semáforos, e no Windows, injete classes CSS dependendo da detecção do modo escuro.

A aplicação deste método reduz o custo de modificar a UI manualmente para cada sistema operacional.

Implementação de wrappers de segurança para chamadas de API nativa

Os canais IPC do Electron sofrem com incidentes de segurança frequentes. O Deno Desktop aumenta a segurança ao transmitir dados via vinculação direta (direct binding). Para controlar as funções do SO com segurança, é necessário implementar classes wrapper manualmente.

  • A entrada e saída de arquivos deve ser restrita ao caminho em sandbox /app_sandbox_storage.
  • Inclua lógica de prevenção de Path Traversal no construtor da classe para bloquear imediatamente caracteres .. no caminho.
  • Ao chamar funções do sistema, como notificações, verifique se o recurso passado como argumento está na whitelist e use apenas dados codificados em base64.

Automação de distribuição com GitHub Actions

Não configure e compile ambientes para cada SO separadamente. Ao usar a estratégia de matriz (matrix strategy) do GitHub Actions, você pode extrair arquivos msi para Windows, AppImage para Linux e dmg para Mac simultaneamente com um único commit.

  • Compile Windows e Linux no ambiente ubuntu-latest, e binários para Mac no macos-14.
  • Adicione a opção --compress=xz ao comando deno desktop --target para reduzir o tamanho final do arquivo.
  • Para os resultados do Linux, execute um teste de funcionamento real em ambiente virtual usando xvfb-run.

A construção deste pipeline torna o ciclo de distribuição duas vezes mais rápido do que a compilação manual. A transição para o Deno traz dois benefícios: binários leves e segurança em sandbox.

관련 영상

O Deno Desktop pode tornar seus aplicativos 70% menores

Better Stack6:17

커뮤니티의 다른 글

댓글

로그인하고 댓글을 남겨 보세요.

아직 댓글이 없습니다.