Fantastico modulo della community

Mimo

Un modulo di tipo MIME completo e compatto.

Stato build

Note sulla versione 2

La versione 2 è un cambiamento radicale da 1.x come suggerisce il semver. In particolare:

  • lookup() rinominato in getType()
  • extension() rinominata in getExtension()
  • charset() metodi charset() e load() sono stati rimossi

Se preferisci la versione precedente di questo modulo, npm install mime@^1 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 versione mime/lite :

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 5
const mime = require('mime'); mime.getType('txt'); // ⇨ 'text/plain' mime.getExtension('text/plain'); // ⇨ 'txt'

Vedi API Mime di seguito per i dettagli API.

Versione semplificata

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

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

Mime .vs. Mime-types .vs. Mime-db modules

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 del tipo MIME estratte da IANA, Apache, NGINX e mappature personalizzate inviate dalla community di Node.js .

mime-types è un sottile wrapper attorno a mime-db che fornisce un'API compatibile con drop-in (ish) con l'API mime @ < v1.3.6 .

mime è, a partire dalla v2, un modulo autonomo in bundle con una versione pre-ottimizzata del set di dati mime-db . Fornisce un'API semplificata con le seguenti caratteristiche:

  • Conflitti di tipo risolti in modo intelligente (vedere il punteggio MIME per i dettagli)
  • Denominazione dei metodi coerente con le migliori pratiche del settore
  • Compact footprint. Eg The minified+compressed sizes of the various modules :
Modulo Taglia
mime-db 18 KB
mime-types uguale a mime-db
mime 8 KB
mime/lite 2 KB

API Mime

Entrambi require('mime') e require('mime/lite') istanze di restituzione 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 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 viene fornito più di un argomento mappa, ogni mappa viene define() ed (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 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 viene restituito nei casi in cui un'estensione non viene rilevata o riconosciuta

1 2 3
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 del tipo di contenuto) vengono ignorate.

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

Definisci [più] mappature di tipo.

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 a un'estensione che è già assegnata a un altro tipo. Passare true per l'argomento force sopprimerà questo comportamento (ignorando qualsiasi mappatura precedente).

1 2 3 4 5
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]

Per esempio

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

Markdown generato da src/README_js.md da Logo RunMD