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
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.