Mòdul comunitari fantàstic

Mim

Un mòdul de tipus MIME complet i compacte.

Estat de construcció

Notes de la versió 2

La versió 2 és un canvi de ruptura respecte a 1.x tal com implica el servidor. Concretament:

  • lookup()rebatejat agetType()
  • extension()rebatejat agetExtension()
  • charset()i load()els mètodes s'han eliminat

Si preferiu la versió heretada d'aquest mòdul npm install mime@^1, podeu trobar documents de la versió 1 aquí .

Instal·lar

NPM

1
npm install mime

Browser

Es recomana que utilitzeu un paquet com ara webpack o browserify per empaquetar el vostre codi. Tanmateix, hi ha versions preparades per al navegador disponibles a wzrd.in. Per exemple, per a la versió completa:

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

O, per a la mime/liteversió:

1 2 3 4
<script src="https://wzrd.in/standalone/mime%2flite@latest"></script> <script> mimelite.getType(...); // (Note `mimelite` here) <script>

Començament ràpid

Per a la versió completa (més de 800 tipus MIME, més de 1.000 extensions):

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

Vegeu l'API de Mime a continuació per obtenir més informació sobre l'API.

Versió Lite

També hi ha una versió "ligera" d'aquest mòdul que omet els tipus específics del proveïdor ( */vnd.*) i experimentals ( */x-*). Té un pes d'aproximadament 2,5 KB, en comparació amb els 8 KB de la versió completa. Per carregar la versió simplificada:

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

Mòduls MIME .vs. MIME-types .vs. MIME-db

Per a aquells que us pregunteu sobre la diferència entre aquests mòduls NPM [populars], aquí teniu un breu resum...

mime-dbés "la font de la veritat" per a la informació de tipus MIME. No és una API, sinó que és un conjunt de dades canònic de definicions de tipus MIME extretes d'IANA, Apache, NGINX i mapes personalitzats enviats per la comunitat Node.js.

mime-typesés un embolcall prim al voltant de mime-db que proporciona una API compatible (ish) amb mime @ < v1.3.6l'API.

mimeés, a partir de la v2, un mòdul autònom inclòs amb una versió preoptimitzada del mime-dbconjunt de dades. Proporciona una API simplificada amb les característiques següents:

  • Conflictes de tipus resolts de manera intel·ligent (vegeu la puntuació MIME per a més detalls)
  • Nom del mètode coherent amb les millors pràctiques del sector
  • Empremta compacta. Per exemple, les mides minificades + comprimides dels diferents mòduls:
Mòdul Mida
mime-db 18 KB
mime-types igual que mime-db
mime 8 KB
mime/lite 2 KB

API Mime

Ambdues instàncies require('mime')i require('mime/lite')retornen de la classe MIME, documentades a continuació.

new Mime(typeMap, ... more maps)

La majoria dels usuaris d'aquest mòdul no hauran de crear instàncies Mime directament. Tanmateix, si voleu crear mapes personalitzats, podeu fer-ho de la següent 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 es proporciona més d'un argument de mapa, cada mapa s'edifica define()(vegeu més avall), per ordre.

mime.getType(pathOrExtension)

Obteniu el tipus MIME per al camí o extensió donats. Per exemple

1 2 3 4 5 6 7 8
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'

nulles retorna en els casos en què no es detecta o reconeix una extensió

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

mime.getExtension(type)

Obteniu l'extensió per al tipus MIME donat. Les opcions del conjunt de caràcters (sovint incloses a les capçaleres de tipus de contingut) s'ignoren.

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

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

Definiu [més] mapes de tipus.

typeMapés un mapa de tipus -> extensions, tal com es documenta a new Mime, més amunt.

De manera predeterminada, aquest mètode generarà un error si intenteu assignar un tipus a una extensió que ja està assignada a un altre tipus. Passar truel' forceargument suprimirà aquest comportament (substituint qualsevol mapeig anterior).

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

Línia d'ordres

1
mime [path_or_extension]

E

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

Reducció generada a partir desrc/README_js.mdperLogotip de RunMD