Mimo
Un modulo di tipo MIME completo e compatto.
Note sulla versione 2
La versione 2 è una modifica sostanziale rispetto alla 1.x come implica il semver.
lookup()
rinominato ingetType()
extension()
rinominato ingetExtension()
charset()
e iload()
metodi sono stati rimossi
Se preferisci la versione legacy di questo modulo, per favore, i npm install mime@^1
documenti della versione 1 possono essere trovati qui .
Installare
NPM
1npm 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 mime/lite
versione:
1
2
3
4<script src="https://wzrd.in/standalone/mime%2flite@latest"></script>
<script>
mimelite.getType(...); // (Note `mimelite` here)
<script>
Avvio veloce
Per la versione completa (800+ tipi MIME, 1.000+ estensioni):
1
2
3
4
5const mime = require('mime');
mime.getType('txt'); // ⇨ 'text/plain'
mime.getExtension('text/plain'); // ⇨ 'txt'
Vedi API Mime di seguito per i dettagli dell'API.
Versione semplificata
Esiste anche una versione "lite" di questo modulo che omette i tipi specifici del fornitore ( */vnd.*
) e sperimentali ( */x-*
). Ha un peso di ~ 2,5 KB, rispetto agli 8 KB della versione completa. Per caricare la versione lite:
1const mime = require('mime/lite');
Mime .vs. tipi mime .vs. moduli mime-db
Per quelli di voi che si chiedono la differenza tra questi moduli NPM [popolari], 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 estratte da IANA, Apache, NGINX e mappature personalizzate inviate dalla comunità Node.js.
mime-types
è un sottile involucro intorno a mime-db che fornisce un drop-in API compatibile (ish) con mime @ < v1.3.6
API.
mime
è, a partire dalla v2, un modulo autonomo in bundle con una versione pre-ottimizzata del mime-db
set di dati e fornisce un'API semplificata con le seguenti caratteristiche:
- Conflitti di tipo risolti in modo intelligente (vedi mime-score per i dettagli)
- Denominazione del metodo coerente con le migliori pratiche del settore
- Ingombro compatto Es. Le dimensioni minimizzate+compresse dei vari moduli:
Modulo | Taglia |
---|---|
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')
restituiscono istanze della classe MIME, documentate di seguito.
new Mime(typeMap, ... more maps)
La maggior parte degli utenti di questo modulo non avrà bisogno di creare istanze Mime direttamente.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 modificata define()
(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
9mime.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
3mime.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
4mime.getExtension('text/plain'); // ⇨ 'txt'
mime.getExtension('application/json'); // ⇨ 'json'
mime.getExtension('text/html; charset=utf8'); // ⇨ 'html'
mime.define(typeMap[, force = false])
Definisci [più] mappature dei tipi.
typeMap
è una mappa di tipo -> estensioni, come documentato in new Mime
, sopra.
Per impostazione predefinita, questo metodo genera un errore se si tenta di mappare un tipo a un interno che è già assegnato a un altro tipo. Passando true
per l'
force
argomento sarà sopprimere questo comportamento (ignorando qualsiasi mappatura precedente).
1
2
3
4
5mime.define({'text/x-abc': ['abc', 'abcd']});
mime.getType('abcd'); // ⇨ 'text/x-abc'
mime.getExtension('text/x-abc') // ⇨ 'abc'
Riga di comando
1mime [path_or_extension]
Per esempio
1
2> mime scripts/jquery.js
application/javascript
Ribasso generato da src/README_js.md di