Import Maps + Rails 7: Gerenciamento de Dependências JavaScript

Gerenciar dependências javascript em seu aplicativo rails

Em versões anteriores do Rails, havia um problema sobre como os pacotes JavaScript de terceiros deveriam ser gerenciados, após a introdução do “Webpacker”.

Import Maps

Agora, com o Rails 7+, temos por padrão os Import Maps, que nos permitem dizer adeus ao Node.js e às ferramentas como o Webpack:

Os Import Maps permitem importar módulos JavaScript usando nomes lógicos que se mapeiam diretamente para arquivos versionados a partir do navegador. Desde o Rails 7, os Import Maps são a opção padrão, permitindo que qualquer pessoa construa aplicações JavaScript modernas usando a maioria das bibliotecas npm sem a necessidade de empacotar ou fazer bundling.

A funcionalidade em si não é complicada. No entanto, ao utilizar o JSPM, que é um atalho para JavaScript Package Management (Gerenciamento de Pacotes JavaScript), você pode carregar qualquer pacote por meio de CDNs para módulos NPM e gerar uma lista de dependências para eles, caso seja necessário . A ferramenta nos permite “fixar” dependências no Import Map usando esta API de forma otimizada.

O Rails utiliza o JSPM para servir bibliotecas JavaScript em sua aplicação. Você pode baixar os arquivos de origem para o diretório do pacote ou servir o código diretamente a partir da URL

Por exemplo, para acessar a biblioteca jQuery, você pode chamar a URL https://api.jspm.io/generate?install=jquery no seu navegador e receber a URL para o código-fonte na resposta JSON. Claro, o serviço oferece algumas opções adicionais para requisições, mas esse conhecimento é suficiente para entender como o Rails coopera com o JSPM na biblioteca de ImportMaps.

Vantagens dos Import Maps

  • Sem Dependência de Node.js ou Yarn: Aplicações que utilizam Import Maps não necessitam de Node.js ou Yarn para funcionar.
  • Sem Processo de Compilação Separado: Ao usar Import Maps, nenhum processo de compilação separado é necessário. Basta iniciar o servidor com rails s e você está pronto para começar.

Instalando importmap-rails

O importmap para Rails já está automaticamente incluído no Rails 7+ para novas aplicações. No entanto, você também pode instalá-lo manualmente em aplicações existentes:

$ bin/bundle add importmap-rails

Após adicionar a gem, execute o comando de instalação:

$ bin/rails importmap:install

Adicionando Pacotes com importmap-rails

Para adicionar novos pacotes npm ao seu aplicativo por meio de CDNs JavaScript.

execute o comando bin/importmap pin no seu terminal para adicionar o pin ao seu arquivo de configuração (config/importmap.rb):

$ bin/importmap pin react react-dom

Em seguida, importe o pacote no application.js como de costume:

import React from "react"
import ReactDOM from "react-dom"

Os pacotes são baixados no vendor/javascript, e eles estarão disponíveis por meio do pipeline de ativos do seu aplicativo.

Com isso, as informações de mapeamento são apresentadas no <head> da pagina por meio de uma tag <script>:

Você também pode usar o /bin/importmap unpin ou update, para remover ou atualizar pacotes

$ bin/importmap unpin react

Definir Preload ao seus PIN

Para evitar que o navegador carregue um arquivo após o outro, O importmap-rails por padrão pré-carrega todos os pin.

Se você não quiser pré-carregar uma dependência, adicione preload: false ao pin específico no config/importmap.rb

Considerações

Em resumo, import-maps oferece uma abordagem simplificada e integrada para gerenciar dependências JavaScript em aplicações Rails, com vantagens significativas em termos de simplicidade, desempenho e manutenção.

No entanto, é importante considerar suas limitações e compatibilidade ao decidir se é a escolha certa para um projeto específico.

Referências

0 Comentário