Module communautaire génial

Mime

Un module complet et compact de type MIME.

État de la construction

Remarques sur la version 2

La version 2 est un changement radical par rapport à la version 1.x, comme l'implique le semver.

  • lookup() renommé en getType()
  • extension() renommé en getExtension()
  • charset()et les load()méthodes ont été supprimées

Si vous préférez la version héritée de ce module s'il vous plaît npm install mime@^1. Les documents de la version 1 peuvent être trouvés 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 5
const mime = require('mime'); mime.getType('txt'); // ⇨ 'text/plain' mime.getExtension('text/plain'); // ⇨ 'txt'

Voir l' API Mime ci-dessous pour les détails de 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érimental ( */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-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 canoniques de définitions de type MIME extraites de l'IANA, d'Apache, de NGINX et des mappages personnalisés soumis par la communauté Node.js.

mime-typesest une enveloppe mince autour de mime-db qui fournit une API compatible (ish) avec l' mime @ < v1.3.6API.

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 type résolus intelligemment (voir mime-score pour plus de détails)
  • Nommage des méthodes conforme aux meilleures pratiques de l'industrie
  • Encombrement compact Ex. 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

Les deux require('mime')et les require('mime/lite')instances de retour de 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 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'

Si plus d'un argument map est fourni, chaque map est define()éditée (voir ci-dessous), dans l'ordre.

mime.getType(pathOrExtension)

Obtenez le type mime pour le chemin ou l'extension donné.

1 2 3 4 5 6 7 8 9
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'

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

1 2 3
mime.getType('foo/txt'); // ⇨ null mime.getType('bogus_type'); // ⇨ null

mime.getExtension(type)

Obtient l'extension pour le type mime donné. Les options de jeu de caractères (souvent incluses dans les en-têtes Content-Type) sont ignorées.

1 2 3 4
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 Mime, ci-dessus.

Par défaut, cette méthode générera une erreur si vous essayez de mapper un type à une extension qui est déjà affectée à un autre type. La transmission truede l' forceargument supprimera ce comportement (en remplaçant tout mappage précédent).

1 2 3 4 5
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]

Par exemple

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

Markdown généré à partir de src/README_js.md par Logo RunMD