Module communautaire génial

Mime

Un module de type MIME complet et compact.

État de la construction

Notes de la version 2

La version 2 est un changement radical par rapport à 1.x comme l'indique le semver. Plus précisément:

  • 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 La documentation de la version 1 peut être trouvée 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 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é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. Mime-types .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é» des 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 extraites de l'IANA, d'Apache, de NGINX et de mappages personnalisés soumis par la communauté Node.js .

mime-types est un wrapper léger autour de mime-db qui fournit une API drop-in compatible (ish) avec l'API mime @ < v1.3.6 .

mime est, à partir de la version 2, un module autonome fourni avec une version pré-optimisée de l'ensemble de données mime-db . 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)
  • 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 Ko
mime-types identique à mime-db
mime 8 Ko
mime/lite 2 Ko

API Mime

Les deux require('mime') et require('mime/lite') renvoient des instances 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 de carte est fourni, chaque carte est define() ed (voir ci-dessous), dans l'ordre.

mime.getType(pathOrExtension)

Récupère le type mime pour le chemin ou l'extension donné. Par exemple

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 [plus] mappages de types.

typeMap est une carte de type -> extensions, comme documenté 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. Passer la valeur true pour l'argument force supprimera ce comportement (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