Fantastico modulo comunitario

Mimo

Un modulo di tipo MIME completo e compatto.

Stato della costruzione

Note sulla versione 2

La versione 2 è una modifica sostanziale rispetto alla 1.x, come suggerisce il semver. Nello specifico:

  • lookup()rinominato ingetType()
  • extension()rinominato ingetExtension()
  • charset()e load()i metodi sono stati rimossi

Se preferisci la versione legacy di questo modulo npm install mime@^1, i documenti della versione 1 possono essere trovati qui .

Installare

NPM

1
npm install mime

Browser

Si consiglia di utilizzare un bundler come webpack o browserify per impacchettare il codice. Tuttavia, le versioni pronte per il browser sono disponibili tramite wzrd.in. Ad esempio, per la versione completa:

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

Oppure, per la mime/liteversione:

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

Avvio rapido

Per la versione completa (oltre 800 tipi MIME, oltre 1.000 estensioni):

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

Consulta l'API Mime di seguito per i dettagli sull'API.

Versione semplificata

Esiste anche una versione "lite" di questo modulo che omette i tipi specifici del fornitore ( */vnd.*) e sperimentali ( */x-*). Pesa circa 2,5 KB, rispetto agli 8 KB della versione completa. Per caricare la versione lite:

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

Mime .vs. tipi-mime .vs. moduli mime-db

Per quelli di voi che si chiedono la differenza tra questi [popolari] moduli NPM, ecco un breve riassunto...

mime-dbè "la fonte della verità" per le informazioni sul tipo MIME. Non è un'API. Piuttosto, è un set di dati canonico di definizioni di tipo MIME estratte da IANA, Apache, NGINX e mappature personalizzate inviate dalla comunità Node.js.

mime-typesè un sottile wrapper attorno a mime-db che fornisce un drop-in API compatibile (più o meno) con mime @ < v1.3.6API.

mimeè, a partire dalla versione 2, un modulo autonomo in bundle con una versione pre-ottimizzata del mime-dbset di dati e fornisce un'API semplificata con le seguenti caratteristiche:

  • Conflitti di tipo risolti in modo intelligente (vedi punteggio mime per i dettagli)
  • Denominazione dei metodi coerente con le migliori pratiche del settore
  • Ingombro compatto, ad esempio le dimensioni ridotte+compresse dei vari moduli:
Modulo Misurare
mime-db 18KB
mime-types uguale a mime-db
mime 8KB
mime/lite 2KB

API Mime

Entrambi require('mime')restituiscono require('mime/lite')istanze della classe MIME, documentate di seguito.

new Mime(typeMap, ... more maps)

La maggior parte degli utenti di questo modulo non avrà bisogno di creare direttamente istanze Mime. Tuttavia, se desideri creare mappature personalizzate, puoi farlo come segue...

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'

Se viene fornito più di un argomento di mappa, ciascuna mappa viene define()modificata (vedi sotto), in ordine.

mime.getType(pathOrExtension)

Ottieni il tipo MIME per il percorso o l'estensione specificati

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'

nullviene restituito nei casi in cui un'estensione non viene rilevata o riconosciuta

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

mime.getExtension(type)

Ottieni l'estensione per il tipo MIME specificato. Le opzioni del set di caratteri (spesso incluse nelle intestazioni Content-Type) vengono ignorate.

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])

Definire [altre] mappature dei tipi.

typeMapè una mappa di tipo -> estensioni, come documentato in new Mime, sopra.

Per impostazione predefinita, questo metodo genererà un errore se si tenta di mappare un tipo su un'estensione già assegnata a un altro tipo. Il passaggio truedell'argomento forcesopprimerà questo comportamento (sostituendo qualsiasi mappatura precedente).

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

Riga di comando

1
mime [path_or_extension]

E

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

Ribasso generato dasrc/README_js.mddiLogo RunMD