Module communautaire génial

Mime

Un module de type MIME complet et compact.

Statut de la construction

Notes de version 2

La version 2 est un changement de rupture par rapport à 1.x comme le suggère le terme.

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

Si vous préférez la version héritée de ce module, veuillez npm install mime@^1 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 version mime/lite :

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 (800+ types MIME, 1000+ 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 Lite

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 lite:

1
const mime = require('mime/lite');

Modules MIME .vs. Mime-types .vs. 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. Ce n'est pas une API. Il s'agit plutôt d'un ensemble de données canoniques de définitions de type mime tirées de l'IANA, Apache, NGINX et des mappages personnalisés soumis par la communauté Node.js .

mime-types est un wrapper mince autour de mime-db qui fournit une API compatible (drop) avec mime @ < v1.3.6 .

mime est, à partir de la v2, un module autonome fourni avec une version pré-optimisée du jeu de données mime-db . Il fournit une API simplifiée avec les caractéristiques suivantes:

  • Conflits de types résolus de manière intelligente (voir mime-score pour plus de détails)
  • Dénomination des méthodes conforme aux meilleures pratiques de l'industrie
  • Compact footprint. Eg The minified+compressed sizes of the various modules :
Module Taille
mime-db 18 KB
mime-types même que mime-db
mime 8 KB
mime/lite 2 Ko

API MIME

Les deux require('mime') et 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 plusieurs arguments de carte sont fournis, chaque carte est define() ed (voir ci-dessous), dans l'ordre.

mime.getType(pathOrExtension)

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

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 retourné 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)

Obtenir 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 des mappages de type [more].

typeMap est une carte de type -> extensions, comme indiqué dans le new Mime , ci-dessus.

Par défaut, cette méthode génère une erreur si vous essayez de mapper un type à une extension qui est déjà affectée à un autre type. Si vous passez true à l'argument force , ce comportement sera supprimé (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