Tolles Community-Modul

Mime

Ein umfassendes, kompaktes MIME-Typ-Modul.

Build-Status

Hinweise zu Version 2

Version 2 ist eine bahnbrechende Änderung gegenüber 1.x, wie das Semver andeutet. Konkret:

  • lookup()umbenannt ingetType()
  • extension()umbenannt ingetExtension()
  • charset()und load()Methoden wurden entfernt

Wenn Sie die ältere Version dieses Moduls bevorzugen npm install mime@^1, finden Sie die Dokumente zu Version 1 hier .

Installieren

NPM

1
npm install mime

Browser

Es wird empfohlen, dass Sie einen Bundler wie Webpack oder Browserify verwenden , um Ihren Code zu packen. Browserfähige Versionen sind jedoch über wzrd.in verfügbar. Beispielsweise für die Vollversion:

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

Oder für die mime/liteVersion:

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

Schnellstart

Für die Vollversion (über 800 MIME-Typen, über 1.000 Erweiterungen):

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

API-Details finden Sie unten unter Mime API .

Lite-Version

Es gibt auch eine „Lite“-Version dieses Moduls, die herstellerspezifische ( */vnd.*) und experimentelle ( */x-*) Typen weglässt. Sie wiegt etwa 2,5 KB, verglichen mit 8 KB für die Vollversion. So laden Sie die Lite-Version:

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

Mime vs. mime-types vs. mime-db-Module

Für diejenigen unter Ihnen, die sich über den Unterschied zwischen diesen [beliebten] NPM-Modulen wundern, hier ein kurzer Überblick ...

mime-dbist „die Quelle der Wahrheit“ für MIME-Typinformationen. Es handelt sich nicht um eine API. Vielmehr handelt es sich um einen kanonischen Datensatz von MIME-Typdefinitionen, die von IANA, Apache, NGINX und benutzerdefinierten Zuordnungen stammen, die von der Node.js-Community übermittelt wurden.

mime-typesist ein dünner Wrapper um mime-db, der ein mit der API kompatibles API-Drop-In bereitstellt mime @ < v1.3.6.

mimeist ab Version 2 ein eigenständiges Modul, das mit einer voroptimierten Version des mime-dbDatensatzes gebündelt ist. Es bietet eine vereinfachte API mit den folgenden Eigenschaften:

  • Intelligent gelöste Typkonflikte ( Einzelheiten finden Sie im Mime-Score )
  • Methodenbenennung im Einklang mit den Best Practices der Branche
  • Kompakte Grundfläche. Z. B. die minimierten und komprimierten Größen der verschiedenen Module:
Modul Größe
mime-db 18 KB
mime-types dasselbe wie mime-db
mime 8 KB
mime/lite 2 KB

Mime-API

Beide require('mime')und require('mime/lite')geben Instanzen der MIME-Klasse zurück, die unten dokumentiert sind.

new Mime(typeMap, ... more maps)

Die meisten Benutzer dieses Moduls müssen Mime-Instanzen nicht direkt erstellen. Wenn Sie jedoch benutzerdefinierte Zuordnungen erstellen möchten, können Sie dies wie folgt tun ...

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'

Wenn mehr als ein Kartenargument angegeben wird, wird jede Karte der define()Reihe nach verarbeitet (siehe unten).

mime.getType(pathOrExtension)

Rufen Sie den MIME-Typ für den angegebenen Pfad oder die angegebene Erweiterung ab. Z. B

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'

nullwird zurückgegeben, wenn eine Erweiterung nicht erkannt oder erkannt wird

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

mime.getExtension(type)

Ruft die Erweiterung für den angegebenen Mime-Typ ab. Zeichensatzoptionen (häufig in Content-Type-Headern enthalten) werden ignoriert.

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

Definieren Sie [mehr] Typzuordnungen.

typeMapist eine Karte vom Typ -> Erweiterungen, wie oben dokumentiert new Mime.

Standardmäßig löst diese Methode einen Fehler aus, wenn Sie versuchen, einen Typ einer Erweiterung zuzuordnen, die bereits einem anderen Typ zugewiesen ist. Durch die Übergabe truedes forceArguments wird dieses Verhalten unterdrückt (wodurch alle vorherigen Zuordnungen überschrieben werden).

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

Befehlszeile

1
mime [path_or_extension]

E

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

Abschlag generiert vonsrc/README_js.mdvonRunMD-Logo