Minificar JavaScript
No todo proyecto que entrega JavaScript quiere montar un bundler para lograrlo. Este endpoint toma un script tal cual y devuelve una versión más pequeña y funcionalmente idéntica, para equipos que necesitan minificar sin adoptar toda una cadena de build.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Cuándo se necesita minificar pero no un sistema de build
Una extensión de navegador con un puñado de scripts independientes, un widget pequeño incrustado en sitios de terceros, un panel de administración heredado que existe desde antes de cualquier herramienta moderna, o una herramienta interna rápida: ninguno de estos casos justifica configurar un bundler, ajustar su ecosistema de plugins y mantener esa configuración viva a través de las actualizaciones de dependencias solo para achicar un archivo antes de publicarlo. data.js_minify existe justo para ese vacío: envíe el script, reciba la versión compactada, sin cadena de herramientas necesaria.
Cómo corre la solicitud
Envíe POST a /data/js-minify con el código fuente del script, y recibirá un task_id de inmediato mientras la minificación se procesa en segundo plano. El resultado, con los espacios en blanco y comentarios eliminados y los identificadores renombrados donde es demostrablemente seguro hacerlo, llega mediante una llamada de webhook firmada o queda disponible en un enlace firmado válido por 24 horas.
Por qué minificar JS es más difícil de lo que parece
A diferencia del CSS, JavaScript es un lenguaje de programación completo con alcance de variables, clausuras y comportamiento dinámico, así que un minificador tiene que entender realmente la estructura del código para achicarlo sin romperlo: renombrar una variable local es seguro, pero renombrar algo referenciado dinámicamente por texto, o del que depende código fuera del alcance minificado, no lo es. Por eso una compactación ingenua basada en texto siempre fue riesgosa para JavaScript de una manera que no lo es para el marcado o los estilos, y por eso los minificadores serios analizan el script en un árbol de sintaxis antes de tocar un solo carácter, una disciplina que viene desde las primeras herramientas de minificación de JS construidas junto con el ascenso del lenguaje como la capa de scripting dominante de la web.
Cómo encaja en la automatización sin un paso de build
Cualquier flujo que genere o entregue JavaScript fuera de un bundler convencional (un sistema de plugins de un gestor de contenidos, un empaquetador de funciones serverless, un generador de código, un trabajo de CI que produce un solo script utilitario) puede llamar a este endpoint como su etapa de minificación en vez de incorporar un analizador y minificador de JS a su propio árbol de dependencias. Cobrar por solicitud sin cargo en las tareas fallidas permite que un script de despliegue minifique con seguridad cada archivo modificado en cada versión sin presupuestar gasto desperdiciado, y como la tarea es asíncrona, un lote de decenas de scripts puede enviarse de una vez y recogerse a medida que llega cada webhook, en vez de procesarse uno por uno en secuencia.
Qué puede hacer con ella
Scripts de una extensión de navegador
Una extensión de navegador minifica sus scripts de contenido y de fondo independientes antes de empaquetar la versión, sin introducir una dependencia de bundler.
Widget incrustable de terceros
Un widget incrustado en sitios de clientes minifica su script para reducir el tiempo de carga en páginas cuyo desempeño el widget no controla.
Empaquetado de funciones serverless
Un empaquetador de funciones serverless minifica el JavaScript de cada función generada antes del despliegue para reducir el peso del arranque en frío.
Mantenimiento de un panel de administración heredado
Una herramienta interna heredada sin sistema de build moderno minifica sus scripts escritos a mano mediante la API antes de cada versión.
Preguntas frecuentes
¿Cómo minifico JavaScript con la API?
Envíe su script por POST a /data/js-minify, guarde el task_id devuelto y reciba el JavaScript minificado por webhook o mediante un enlace firmado válido por 24 horas.
¿Es gratis la API para minificar JavaScript?
No, no hay plan gratuito ni prueba; cuesta $0.002 por solicitud, y una solicitud fallida nunca se cobra.
¿Minificar rompe el comportamiento de mi script?
No, solo se aplican espacios en blanco, comentarios y renombrado demostrablemente seguro; el comportamiento en tiempo de ejecución del código se mantiene igual.
¿Necesito un bundler para usar esto?
No, ese es justamente el punto: está pensado para scripts que se entregan fuera de un pipeline de bundler, así que puede minificar sin adoptar una cadena de build.
¿Soporta sintaxis moderna de JavaScript?
Sí, la sintaxis moderna estándar como funciones flecha, clases y módulos se analiza y minifica correctamente.
¿Puedo minificar muchos scripts por lote?
Sí, envíe una tarea asíncrona por archivo y reciba cada resultado por webhook, algo que funciona bien para un lote de decenas de scripts a la vez.
¿Ya está disponible este endpoint?
Sí, data.js_minify está en producción y acepta solicitudes ahora mismo.
¿Se guarda mi script de origen después de minificarlo?
No, tanto el JavaScript enviado como el minificado se eliminan después del período de retención y nunca se usan para entrenamiento.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/data/js-minify \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/js-minify", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/js-minify",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/js-minify", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/js-minify", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.js_minify",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |