Sobre o projeto

# esm.sh Um CDN JavaScript sem build para o desenvolvimento web moderno. ## Visão geral esm.sh permite importar módulos JavaScript diretamente de URLs HTTP sem qualquer instalação ou etapa de build. Ele transforma o código-fonte em módulos ES compatíveis com o navegador no lado do servidor, armazena os resultados em cache e os serve a partir de um CDN global da Cloudflare. ## Suporte a registros - **NPM**: Importe qualquer pacote por nome, versão ou tag - **JSR**: Registro amigável ao Deno começando com `/jsr/` - **GitHub**: Importações diretas de repositórios com o prefixo `/gh/` - **pkg.pr.new**: Builds de pré-visualização de PRs com o prefixo `/pr/` ## Principais recursos ### Importações sem build ```js import React from "https://esm.sh/react@19.2.4"; import { encodeBase64 } from "https://esm.sh/jsr/@std/encoding@1.0.0/base64"; ``` ### Transformação de código-fonte Transforma automaticamente arquivos `.ts(x)`, `.vue` e `.svelte` no navegador sem ferramentas de build. ### Gerenciamento de dependências Especifique versões de dependências com parâmetros de consulta: ```js import useSWR from "https://esm.sh/swr?deps=react@18.3.1"; ``` Crie aliases para dependências: ```js import useSWR from "https://esm.sh/swr?alias=react:preact/compat"; ``` ### Opções de empacotamento - `?bundle=false` - desativa o empacotamento padrão - `?standalone` - empacota todas as dependências em um único arquivo - `?raw` - serve o código-fonte sem transformação - `?exports=foo,bar` - faz tree-shaking para exportações específicas ### Configuração de build Controle os alvos e opções de build: ```js // Build de desenvolvimento import React from "https://esm.sh/react?dev"; // Especificar alvo import React from "https://esm.sh/react?target=es2022"; // Opções do ESBuild import foo from "https://esm.sh/foo?conditions=custom1,custom2"; import foo from "https://esm.sh/foo?keep-names"; ``` ### Integração com Import Maps Funciona com import maps de HTML para resolução de especificadores bare: ```html <script type="importmap"> { "imports": { "react": "https://esm.sh/react@19.2.4" } } </script> ``` Use o prefixo `?external` ou `*` para manter as importações como especificadores bare para resolução pelo navegador. ### Recursos adicionais - **Importações de CSS**: flag `?css` para pacotes que importam CSS em JS - **Web Workers**: consulta `?worker` para carregamento de worker com suporte a injeção - **Compatibilidade com Deno**: resolve módulos nativos do Node.js (fs, os, net, etc.) - **Suporte a TypeScript**: definições de tipo automáticas via cabeçalho `X-TypeScript-Types` - **script tsx**: script de 1KB para escrever TSX diretamente em HTML ### Limpeza de cache Atualize builds em cache para pacotes atualizados: - Versões exatas são reconstruídas imediatamente - Nomes bare re-resolvem versões na próxima requisição - Desafio proof-of-work evita abusos ### Auto-hospedagem Implante sua própria instância seguindo a [documentação de hospedagem](./HOSTING.md). ## Limitações Atualmente não é suportado pelos runtimes Node.js ou Bun. ## Licença MIT