Mime
Un module complet et compact de type MIME.
Remarques sur la version 2
La version 2 est un changement radical par rapport à la version 1.x, comme le suggère le semver.
lookup()
renommé engetType()
extension()
renommé engetExtension()
charset()
etload()
les méthodes ont été supprimées
Si vous préférez la version héritée de ce module npm install mime@^1
, veuillez consulter la documentation de la version 1 ici .
Installer
NPM
1npm install mime
Browser
Il est recommandé d'utiliser un bundler tel que webpack ou browserify pour empaqueter votre code. Cependant, des versions prêtes pour le navigateur sont disponibles via wzrd.in. Par exemple, pour la version complète :
1
2
3
4<script src="https://wzrd.in/standalone/mime@latest"></script>
<script>
mime.getType(...); // etc.
<script>
Ou, pour la mime/lite
version :
1
2
3
4<script src="https://wzrd.in/standalone/mime%2flite@latest"></script>
<script>
mimelite.getType(...); // (Note `mimelite` here)
<script>
Démarrage rapide
Pour la version complète (plus de 800 types MIME, plus de 1 000 extensions) :
1
2
3
4const mime = require('mime');
mime.getType('txt'); // ⇨ 'text/plain'
mime.getExtension('text/plain'); // ⇨ 'txt'
Voir l'API Mime ci-dessous pour plus de détails sur l'API.
Version allégée
Il existe également une version "allégée" de ce module qui omet les types spécifiques au fournisseur ( */vnd.*
) et expérimentaux ( */x-*
). Il pèse environ 2,5 Ko, contre 8 Ko pour la version complète. Pour charger la version allégée :
1const mime = require('mime/lite');
Mime .vs. types mime .vs modules mime-db
Pour ceux d'entre vous qui s'interrogent sur la différence entre ces modules NPM [populaires], voici un bref aperçu...
mime-db
est "la source de vérité" pour les informations de type MIME. Il ne s'agit pas d'une API. Il s'agit plutôt d'un ensemble de données canonique de définitions de types MIME extraites de l'IANA, d'Apache, de NGINX et de mappages personnalisés soumis par la communauté Node.js.
mime-types
est un mince wrapper autour de mime-db qui fournit une API compatible (ish) avec mime @ < v1.3.6
l'API.
mime
est, à partir de la v2, un module autonome fourni avec une version pré-optimisée du mime-db
jeu de données. Il fournit une API simplifiée avec les caractéristiques suivantes :
- Conflits de types résolus intelligemment (voir mime-score pour plus de détails)
- Dénomination des méthodes conforme aux meilleures pratiques de l'industrie
- Encombrement compact. Par exemple, les tailles minifiées + compressées des différents modules :
Module | Taille |
---|---|
mime-db |
18 Ko |
mime-types |
identique à mime-db |
mime |
8 Ko |
mime/lite |
2 Ko |
API Mime
require('mime')
Les deux require('mime/lite')
instances renvoient la classe MIME, documentées ci-dessous.
new Mime(typeMap, ... more maps)
La plupart des utilisateurs de ce module n'auront pas besoin de créer directement des instances Mime. Cependant, si vous souhaitez créer des mappages personnalisés, vous pouvez le faire comme suit...
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 plusieurs arguments de carte sont fournis, chaque carte est define()
éditée (voir ci-dessous), dans l'ordre.
mime.getType(pathOrExtension)
Récupère le type MIME pour le chemin ou l'extension donné.
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
est renvoyé dans les cas où une extension n'est pas détectée ou reconnue
1
2mime.getType('foo/txt'); // ⇨ null
mime.getType('bogus_type'); // ⇨ null
mime.getExtension(type)
Obtient l'extension pour le type MIME donné.Les options Charset (souvent incluses dans les en-têtes Content-Type)sont ignorées.
1
2
3mime.getExtension('text/plain'); // ⇨ 'txt'
mime.getExtension('application/json'); // ⇨ 'json'
mime.getExtension('text/html; charset=utf8'); // ⇨ 'html'
mime.define(typeMap[, force = false])
Définissez [plus] de mappages de types.
typeMap
est une carte de type -> extensions, comme documenté dans new Mime
ci-dessus.
Par défaut, cette méthode générera une erreur si vous essayez de mapper un type à une extension déjà affectée à un autre type. Passer true
l'
force
argument supprimera ce comportement (en remplaçant tout mappage précédent).
1
2
3
4mime.define({'text/x-abc': ['abc', 'abcd']});
mime.getType('abcd'); // ⇨ 'text/x-abc'
mime.getExtension('text/x-abc') // ⇨ 'abc'
Ligne de commande
1mime [path_or_extension]
E
1
2> mime scripts/jquery.js
application/javascript
Markdown généré à partir desrc/README_js.mdpar