Modulo community fantastico

mimo

Un modulo di tipo MIME completo e compatto.

Stato build

Note sulla versione 2

La versione 2 è una rottura rispetto alla 1.x, come suggerisce il semver.

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

Se preferisci la versione legacy di questo modulo, per favore npm install mime@^1 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 (800+ tipi MIME, 1.000+ estensioni):

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

Vedi Mime API di seguito per i dettagli dell'API.

Versione Lite

Esiste anche una versione "lite" di questo modulo che omette i tipi specifici del fornitore ( */vnd.* ) E sperimentali ( */x-* ) e pesa ~ 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 ricavato da IANA, Apache, NGINX e mappature personalizzate inviate dalla community Node.js .

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

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

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

API Mime

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

new Mime(typeMap, ... more maps)

La maggior parte degli utenti di questo modulo non dovrà 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 della mappa, ogni mappa viene define() ed (vedi sotto), in ordine.

mime.getType(pathOrExtension)

Ottieni il tipo mime per il percorso o l'estensione indicati

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'

viene restituito null 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 Content-Type) 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])

Definire [altro] tipi di mapping.

typeMap è una mappa di typeMap > estensioni, come documentato nel new Mime , sopra.

Per impostazione predefinita, questo metodo genererà un errore se si tenta di mappare un tipo su un'estensione che è già assegnata a un altro tipo. Il passaggio true per l'argomento force eliminerà questo comportamento (ignorando qualsiasi mapping 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]

Ad esempio,

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

Markdown generato da src/README_js.md da Logo RunMD