Mime
Ein umfassendes, kompaktes MIME-Typ-Modul.
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()
undload()
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
1npm 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/lite
Version:
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
4const 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:
1const 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-db
ist „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-types
ist ein dünner Wrapper um mime-db, der ein mit der API kompatibles API-Drop-In bereitstellt mime @ < v1.3.6
.
mime
ist ab Version 2 ein eigenständiges Modul, das mit einer voroptimierten Version des mime-db
Datensatzes 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
8mime.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
wird zurückgegeben, wenn eine Erweiterung nicht erkannt oder erkannt wird
1
2mime.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
3mime.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.
typeMap
ist 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 true
des
force
Arguments wird dieses Verhalten unterdrückt (wodurch alle vorherigen Zuordnungen überschrieben werden).
1
2
3
4mime.define({'text/x-abc': ['abc', 'abcd']});
mime.getType('abcd'); // ⇨ 'text/x-abc'
mime.getExtension('text/x-abc') // ⇨ 'abc'
Befehlszeile
1mime [path_or_extension]
E
1
2> mime scripts/jquery.js
application/javascript
Abschlag generiert vonsrc/README_js.mdvon