Mimo
Un modulo di tipo MIME completo e compatto.
Note sulla versione 2
La versione 2 è una modifica sostanziale rispetto alla 1.x, come suggerisce il semver. Nello specifico:
lookup()
rinominato ingetType()
extension()
rinominato ingetExtension()
charset()
eload()
i metodi sono stati rimossi
Se preferisci la versione legacy di questo modulo npm install mime@^1
, i 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 rapido
Per la versione completa (oltre 800 tipi MIME, oltre 1.000 estensioni):
1
2
3
4const mime = require('mime');
mime.getType('txt'); // ⇨ 'text/plain'
mime.getExtension('text/plain'); // ⇨ 'txt'
Consulta l'API Mime di seguito per i dettagli sull'API.
Versione semplificata
Esiste anche una versione "lite" di questo modulo che omette i tipi specifici del fornitore ( */vnd.*
) e sperimentali ( */x-*
). Pesa circa 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 [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 estratte da IANA, Apache, NGINX e mappature personalizzate inviate dalla comunità Node.js.
mime-types
è un sottile wrapper attorno a mime-db che fornisce un drop-in API compatibile (più o meno) con mime @ < v1.3.6
API.
mime
è, a partire dalla versione 2, 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 punteggio mime per i dettagli)
- Denominazione dei metodi coerente con le migliori pratiche del settore
- Ingombro compatto, ad esempio le dimensioni ridotte+compresse dei vari moduli:
Modulo | Misurare |
---|---|
mime-db |
18KB |
mime-types |
uguale a mime-db |
mime |
8KB |
mime/lite |
2KB |
API Mime
Entrambi require('mime')
restituiscono require('mime/lite')
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 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// 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 di mappa, ciascuna mappa viene define()
modificata (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
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
viene restituito nei casi in cui un'estensione non viene rilevata o riconosciuta
1
2mime.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
3mime.getExtension('text/plain'); // ⇨ 'txt'
mime.getExtension('application/json'); // ⇨ 'json'
mime.getExtension('text/html; charset=utf8'); // ⇨ 'html'
mime.define(typeMap[, force = false])
Definire [altre] mappature dei tipi.
typeMap
è una mappa di tipo -> estensioni, come documentato in new Mime
, sopra.
Per impostazione predefinita, questo metodo genererà un errore se si tenta di mappare un tipo su un'estensione già assegnata a un altro tipo. Il passaggio true
dell'argomento
force
sopprimerà questo comportamento (sostituendo qualsiasi mappatura precedente).
1
2
3
4mime.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]
E
1
2> mime scripts/jquery.js
application/javascript
Ribasso generato dasrc/README_js.mddi