Mímica
Un módulo tipo MIME completo y compacto.
Notas de la versión 2
La versión 2 es un cambio importante con respecto a la 1.x, como implica semver.
lookup()
renombrado agetType()
extension()
renombrado agetExtension()
charset()
yload()
los métodos han sido eliminados
Si prefiere la versión heredada de este módulo npm install mime@^1
, los documentos de la versión 1 se pueden encontrar aquí .
Instalar
NPM
1npm install mime
Browser
Se recomienda que utilice un paquete como webpack o browserify para empaquetar su código. Sin embargo, hay versiones listas para el navegador disponibles a través de wzrd.in. Por ejemplo, para la versión completa:
1
2
3
4<script src="https://wzrd.in/standalone/mime@latest"></script>
<script>
mime.getType(...); // etc.
<script>
O, para la mime/lite
versión:
1
2
3
4<script src="https://wzrd.in/standalone/mime%2flite@latest"></script>
<script>
mimelite.getType(...); // (Note `mimelite` here)
<script>
Inicio rápido
Para la versión completa (más de 800 tipos MIME, más de 1000 extensiones):
1
2
3
4const mime = require('mime');
mime.getType('txt'); // ⇨ 'text/plain'
mime.getExtension('text/plain'); // ⇨ 'txt'
Consulte Mime API a continuación para obtener detalles sobre la API.
Version lite
También hay una versión "lite" de este módulo que omite los tipos específicos del proveedor ( */vnd.*
) y experimental ( */x-*
). Pesa ~2,5 KB, en comparación con los 8 KB de la versión completa. Para cargar la versión lite:
1const mime = require('mime/lite');
Mime frente a tipos mime frente a módulos mime-db
Para aquellos de ustedes que se preguntan acerca de la diferencia entre estos módulos [populares] de NPM, aquí hay un breve resumen...
mime-db
es "la fuente de la verdad" para la información de tipos MIME. No es una API, sino un conjunto de datos canónicos de definiciones de tipos MIME extraídas de IANA, Apache, NGINX y asignaciones personalizadas enviadas por la comunidad Node.js.
mime-types
es un contenedor delgado alrededor de mime-db que proporciona una API compatible (más o menos) con mime @ < v1.3.6
API.
mime
es, a partir de la v2, un módulo autónomo incluido con una versión preoptimizada del mime-db
conjunto de datos. Proporciona una API simplificada con las siguientes características:
- Conflictos de tipos resueltos de forma inteligente (consulte MIME-Score para obtener más detalles)
- Denominación de métodos coherente con las mejores prácticas de la industria
- Tamaño compacto, por ejemplo, los tamaños minimizados+comprimidos de los distintos módulos:
Módulo | Tamaño |
---|---|
mime-db |
18 KB |
mime-types |
igual que mime-db |
mime |
8 KB |
mime/lite |
2 KB |
API mimo
Ambos require('mime')
y require('mime/lite')
devuelven instancias de la clase MIME, documentadas a continuación.
new Mime(typeMap, ... more maps)
La mayoría de los usuarios de este módulo no necesitarán crear instancias Mime directamente. Sin embargo, si desea crear asignaciones personalizadas, puede hacerlo de la siguiente manera...
1
2
3
4
5
6
7
8
9
10
11
12
13// Require Mime class
const Mime = require('mime/Mime');
// Define mime type -> extensions map
const typeMap = {
'text/abc': ['abc', 'alpha', 'bet'],
'text/def': ['leppard']
};
// Create and use Mime instance
const myMime = new Mime(typeMap);
myMime.getType('abc'); // ⇨ 'text/abc'
myMime.getExtension('text/def'); // ⇨ 'leppard'
Si se proporciona más de un argumento de mapa, cada mapa se define()
edita (ver más abajo), en orden.
mime.getType(pathOrExtension)
Obtener el tipo MIME para la ruta o extensión dada.
1
2
3
4
5
6
7
8mime.getType('js'); // ⇨ 'application/javascript'
mime.getType('json'); // ⇨ 'application/json'
mime.getType('txt'); // ⇨ 'text/plain'
mime.getType('dir/text.txt'); // ⇨ 'text/plain'
mime.getType('dir\\text.txt'); // ⇨ 'text/plain'
mime.getType('.text.txt'); // ⇨ 'text/plain'
mime.getType('.txt'); // ⇨ 'text/plain'
null
se devuelve en los casos en los que no se detecta o reconoce una extensión
1
2mime.getType('foo/txt'); // ⇨ null
mime.getType('bogus_type'); // ⇨ null
mime.getExtension(type)
Obtiene la extensión para el tipo mime dado. Las opciones de conjunto de caracteres (a menudo incluidas en los encabezados de tipo de contenido) se ignoran.
1
2
3mime.getExtension('text/plain'); // ⇨ 'txt'
mime.getExtension('application/json'); // ⇨ 'json'
mime.getExtension('text/html; charset=utf8'); // ⇨ 'html'
mime.define(typeMap[, force = false])
Defina [más] asignaciones de tipos.
typeMap
es un mapa de tipo -> extensiones, como se documenta new Mime
arriba.
De forma predeterminada, este método generará un error si intenta asignar un tipo a una extensión que ya está asignada a otro tipo. Pasar true
el
force
argumento suprimirá este comportamiento (anulando cualquier asignación anterior).
1
2
3
4mime.define({'text/x-abc': ['abc', 'abcd']});
mime.getType('abcd'); // ⇨ 'text/x-abc'
mime.getExtension('text/x-abc') // ⇨ 'abc'
Línea de comando
1mime [path_or_extension]
mi
1
2> mime scripts/jquery.js
application/javascript
Rebaja generada a partir desrc/README_js.mdpor