Módulo comunitario incrible

Mímica

Un módulo MIME completo e compacto.

Estado de compilación

Notas da versión 2

A versión 2 supón un cambio radical desde 1.x como implica sempre. Especificamente:

  • lookup() renomeado a getType()
  • extension() renomeado a getExtension()
  • charset()e load()elimináronse os métodos

Se prefires a versión antiga deste módulo, npm install mime@^1pódense atopar aquí os documentos da versión 1 .

Instalar

NPM

1
npm install mime

Browser

Recoméndase que use un empaquetador como webpack ou browserify para empaquetar o seu código. Non obstante, as versións listas para o navegador están dispoñibles a través de wzrd.in. Por exemplo, para a versión completa:

1 2 3 4
<script src="https://wzrd.in/standalone/mime@latest"></script> <script> mime.getType(...); // etc. <script>

Ou, para a mime/liteversió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 a versión completa (máis de 800 tipos MIME, máis de 1.000 extensións):

1 2 3 4 5
const mime = require('mime'); mime.getType('txt'); // ⇨ 'text/plain' mime.getExtension('text/plain'); // ⇨ 'txt'

Vexa a continuación a API Mime para máis detalles sobre a API.

Versión Lite

Tamén hai unha versión "lite" deste módulo que omite os tipos específicos do provedor ( */vnd.*) e experimentais ( */x-*). Pesa aproximadamente 2,5 KB, en comparación con 8 KB para a versión completa. Para cargar a versión lite:

1
const mime = require('mime/lite');

Mime .vs. Mime-types .vs. Mime-db módulos

Para aqueles de vostedes que se pregunten pola diferenza entre estes [populares] módulos NPM, aquí tes un breve resumo ...

mime-db é "a fonte da verdade" para a información de tipo MIME. Non é unha API. Pola contra, é un conxunto de datos canónico de definicións de tipo MIME extraídas de IANA, Apache, NGINX e mapas personalizados enviados pola comunidade Node.js.

mime-typesé un envoltorio fino en torno a mime-db que proporciona un API de entrada compatible (ish) con mime @ < v1.3.6API.

mimeé, a partir de v2, un módulo autónomo incluído cunha versión do mime-dbconxunto de datos pre-optimizada . Ofrece unha API simplificada coas seguintes características:

  • Conflitos de tipo resoltos de xeito intelixente (ver detalles da mime )
  • Nomes de métodos compatibles coas mellores prácticas da industria
  • Pegada compacta. Por exemplo, os tamaños comprimidos + comprimidos dos 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 Mime

Ambas require('mime')e require('mime/lite')instancias de retorno da clase MIME, documentadas a continuación.

new Mime(typeMap, ... more maps)

A maioría dos usuarios deste módulo non terán que crear instancias Mime directamente. Non obstante, se desexa crear mapas personalizados, pode facelo do seguinte xeito ...

1 2 3 4 5 6 7 8 9 10 11 12 13 14
// 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'

Se se fornece máis dun argumento de mapa, edítase cada mapa define()(ver máis abaixo), en orde.

mime.getType(pathOrExtension)

Obteña o tipo MIME para o camiño ou a extensión indicados. Ex

1 2 3 4 5 6 7 8 9
mime.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 devólvese nos casos en que non se detecta ou recoñece unha extensión

1 2 3
mime.getType('foo/txt'); // ⇨ null mime.getType('bogus_type'); // ⇨ null

mime.getExtension(type)

Obtén a extensión do tipo MIME indicado. As opcións do xogo de caracteres (moitas veces incluídas nas cabeceiras de tipo contido) son ignoradas.

1 2 3 4
mime.getExtension('text/plain'); // ⇨ 'txt' mime.getExtension('application/json'); // ⇨ 'json' mime.getExtension('text/html; charset=utf8'); // ⇨ 'html'

mime.define(typeMap[, force = false])

Define [máis] asignacións de tipos.

typeMapé un mapa de tipo -> extensións, como se documenta en new Mimearriba.

Por defecto, este método producirá un erro se intenta asignar un tipo a unha extensión que xa está asignada a outro tipo. Se pasa trueo forceargumento suprimirase este comportamento (anulando calquera asignación anterior).

1 2 3 4 5
mime.define({'text/x-abc': ['abc', 'abcd']}); mime.getType('abcd'); // ⇨ 'text/x-abc' mime.getExtension('text/x-abc') // ⇨ 'abc'

Liña de comando

1
mime [path_or_extension]

Por exemplo

1 2
> mime scripts/jquery.js application/javascript

Redución xerada a partir de src/README_js.md por Logotipo de RunMD