Module communautaire génial

Mime

Un module complet et compact de type MIME.

Statut de construction

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()et load()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

1
npm 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/liteversion :

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 4
const 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 :

1
const 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-dbest "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-typesest un mince wrapper autour de mime-db qui fournit une API compatible (ish) avec mime @ < v1.3.6l'API.

mimeest, à partir de la v2, un module autonome fourni avec une version pré-optimisée du mime-dbjeu 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 8
mime.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'

nullest renvoyé dans les cas où une extension n'est pas détectée ou reconnue

1 2
mime.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 3
mime.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.

typeMapest une carte de type -> extensions, comme documenté dans new Mimeci-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 truel' forceargument supprimera ce comportement (en remplaçant tout mappage précédent).

1 2 3 4
mime.define({'text/x-abc': ['abc', 'abcd']}); mime.getType('abcd'); // ⇨ 'text/x-abc' mime.getExtension('text/x-abc') // ⇨ 'abc'

Ligne de commande

1
mime [path_or_extension]

E

1 2
> mime scripts/jquery.js application/javascript

Markdown généré à partir desrc/README_js.mdparLogo RunMD