Sobre el proyecto
# esm.sh
Un CDN de JavaScript sin compilación para el desarrollo web moderno.
## Resumen
esm.sh permite importar módulos de JavaScript directamente desde URLs HTTP sin pasos de instalación o compilación. Transforma el código fuente en módulos ES compatibles con el navegador en el lado del servidor, almacena en caché los resultados y los sirve desde un CDN global de Cloudflare.
## Soporte de Registros
- **NPM**: Importa cualquier paquete por nombre, versión o etiqueta
- **JSR**: Registro compatible con Deno, comenzando con `/jsr/`
- **GitHub**: Importaciones directas desde repositorios con el prefijo `/gh/`
- **pkg.pr.new**: Builds de vista previa desde PRs con el prefijo `/pr/`
## Características Clave
### Importaciones Sin Compilación
```js
import React from "https://esm.sh/react@19.2.4";
import { encodeBase64 } from "https://esm.sh/jsr/@std/encoding@1.0.0/base64";
```
### Transformación de Código Fuente
Transforma automáticamente archivos `.ts(x)`, `.vue` y `.svelte` en el navegador sin herramientas de compilación.
### Gestión de Dependencias
Especifica versiones de dependencias con parámetros de consulta:
```js
import useSWR from "https://esm.sh/swr?deps=react@18.3.1";
```
Usa alias para dependencias:
```js
import useSWR from "https://esm.sh/swr?alias=react:preact/compat";
```
### Opciones de Empaquetado
- `?bundle=false` - desactiva el empaquetado predeterminado
- `?standalone` - agrupa todas las dependencias en un solo archivo
- `?raw` - sirve el código fuente sin transformar
- `?exports=foo,bar` - reduce el árbol a exportaciones específicas
### Configuración de Build
Controla los objetivos y opciones de compilación:
```js
// Build de desarrollo
import React from "https://esm.sh/react?dev";
// Especifica el objetivo
import React from "https://esm.sh/react?target=es2022";
// Opciones de ESBuild
import foo from "https://esm.sh/foo?conditions=custom1,custom2";
import foo from "https://esm.sh/foo?keep-names";
```
### Integración con Mapas de Importación
Funciona con mapas de importación HTML para resolución de especificadores desnudos:
```html
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@19.2.4"
}
}
</script>
```
Usa `?external` o el prefijo `*` para mantener las importaciones como especificadores desnudos para la resolución del navegador.
### Características Adicionales
- **Importaciones CSS**: bandera `?css` para paquetes que importan CSS en JS
- **Web Workers**: consulta `?worker` para carga de workers con soporte de inyección
- **Compatibilidad con Deno**: resuelve módulos integrados de Node.js (fs, os, net, etc.)
- **Soporte de TypeScript**: definiciones de tipos automáticas via cabecera `X-TypeScript-Types`
- **Script tsx**: script de 1KB para escribir TSX directamente en HTML
### Purga de Caché
Actualiza builds en caché para paquetes actualizados:
- Las versiones exactas se reconstruyen inmediatamente
- Los nombres desnudos vuelven a resolver versiones en la siguiente solicitud
- Reto de prueba-de-trabajo previene abuso
### Autoalojamiento
Despliega tu propia instancia siguiendo la [documentación de alojamiento](./HOSTING.md).
## Limitaciones
Actualmente no es compatible con los runtimes de Node.js o Bun.
## Licencia
MIT
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.