Mim
Un mòdul de tipus MIME complet i compacte.
Notes de la versió 2
La versió 2 és un canvi de ruptura respecte a 1.x tal com implica el servidor. Concretament:
lookup()
rebatejat agetType()
extension()
rebatejat agetExtension()
charset()
iload()
els mètodes s'han eliminat
Si preferiu la versió heretada d'aquest mòdul npm install mime@^1
, podeu trobar documents de la versió 1 aquí .
Instal·lar
NPM
1npm install mime
Browser
Es recomana que utilitzeu un paquet com ara webpack o browserify per empaquetar el vostre codi. Tanmateix, hi ha versions preparades per al navegador disponibles a wzrd.in. Per exemple, per a la versió completa:
1
2
3
4<script src="https://wzrd.in/standalone/mime@latest"></script>
<script>
mime.getType(...); // etc.
<script>
O, per a la mime/lite
versió:
1
2
3
4<script src="https://wzrd.in/standalone/mime%2flite@latest"></script>
<script>
mimelite.getType(...); // (Note `mimelite` here)
<script>
Començament ràpid
Per a la versió completa (més de 800 tipus MIME, més de 1.000 extensions):
1
2
3
4const mime = require('mime');
mime.getType('txt'); // ⇨ 'text/plain'
mime.getExtension('text/plain'); // ⇨ 'txt'
Vegeu l'API de Mime a continuació per obtenir més informació sobre l'API.
Versió Lite
També hi ha una versió "ligera" d'aquest mòdul que omet els tipus específics del proveïdor ( */vnd.*
) i experimentals ( */x-*
). Té un pes d'aproximadament 2,5 KB, en comparació amb els 8 KB de la versió completa. Per carregar la versió simplificada:
1const mime = require('mime/lite');
Mòduls MIME .vs. MIME-types .vs. MIME-db
Per a aquells que us pregunteu sobre la diferència entre aquests mòduls NPM [populars], aquí teniu un breu resum...
mime-db
és "la font de la veritat" per a la informació de tipus MIME. No és una API, sinó que és un conjunt de dades canònic de definicions de tipus MIME extretes d'IANA, Apache, NGINX i mapes personalitzats enviats per la comunitat Node.js.
mime-types
és un embolcall prim al voltant de mime-db que proporciona una API compatible (ish) amb mime @ < v1.3.6
l'API.
mime
és, a partir de la v2, un mòdul autònom inclòs amb una versió preoptimitzada del mime-db
conjunt de dades. Proporciona una API simplificada amb les característiques següents:
- Conflictes de tipus resolts de manera intel·ligent (vegeu la puntuació MIME per a més detalls)
- Nom del mètode coherent amb les millors pràctiques del sector
- Empremta compacta. Per exemple, les mides minificades + comprimides dels diferents mòduls:
Mòdul | Mida |
---|---|
mime-db |
18 KB |
mime-types |
igual que mime-db |
mime |
8 KB |
mime/lite |
2 KB |
API Mime
Ambdues instàncies require('mime')
i require('mime/lite')
retornen de la classe MIME, documentades a continuació.
new Mime(typeMap, ... more maps)
La majoria dels usuaris d'aquest mòdul no hauran de crear instàncies Mime directament. Tanmateix, si voleu crear mapes personalitzats, podeu fer-ho de la següent manera...
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'
Si es proporciona més d'un argument de mapa, cada mapa s'edifica define()
(vegeu més avall), per ordre.
mime.getType(pathOrExtension)
Obteniu el tipus MIME per al camí o extensió donats. Per exemple
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
es retorna en els casos en què no es detecta o reconeix una extensió
1
2mime.getType('foo/txt'); // ⇨ null
mime.getType('bogus_type'); // ⇨ null
mime.getExtension(type)
Obteniu l'extensió per al tipus MIME donat. Les opcions del conjunt de caràcters (sovint incloses a les capçaleres de tipus de contingut) s'ignoren.
1
2
3mime.getExtension('text/plain'); // ⇨ 'txt'
mime.getExtension('application/json'); // ⇨ 'json'
mime.getExtension('text/html; charset=utf8'); // ⇨ 'html'
mime.define(typeMap[, force = false])
Definiu [més] mapes de tipus.
typeMap
és un mapa de tipus -> extensions, tal com es documenta a new Mime
, més amunt.
De manera predeterminada, aquest mètode generarà un error si intenteu assignar un tipus a una extensió que ja està assignada a un altre tipus. Passar true
l'
force
argument suprimirà aquest comportament (substituint qualsevol mapeig anterior).
1
2
3
4mime.define({'text/x-abc': ['abc', 'abcd']});
mime.getType('abcd'); // ⇨ 'text/x-abc'
mime.getExtension('text/x-abc') // ⇨ 'abc'
Línia d'ordres
1mime [path_or_extension]
E
1
2> mime scripts/jquery.js
application/javascript
Reducció generada a partir desrc/README_js.mdper