A tiny (2.8kB) and fast utility for getting a MIME type from an extension or filename
npm install mrmime
* Lightweight – 2.8kB gzip
_Only includes standard mime types; all experimental and vendor-specific mimetypes removed._
* Performant
_All lookups are O(1) with minimal processing._
* Comprehensive Dictionary
_Generated from mime-db, which aggregates the IANA, NGINX, and Apache datasets._
* Customizable
_Exposes the mimes dictionary for easy additions or overrides._
* Supports Native ESM and Deno
_Ships with CommonJS and ESM support!_
```
$ npm install --save mrmime
`js
import { lookup, mimes } from 'mrmime';
// Get a MIME type
// ---
lookup('txt'); //=> "text/plain"
lookup('.txt'); //=> "text/plain"
lookup('a.txt'); //=> "text/plain"
// Unknown extension
// ---
lookup('.xyz'); //=> undefined
// Add extension to dictionary
// ---
mimes['xyz'] = 'hello/world';
lookup('xyz'); //=> "hello/world"
`
or undefined#### input
Type:
stringThe extension or filename to lookup.
> Important:
> * Any
input value is cast to string, lowercased, and trimmed.
> * If a filename or filepath is provided, only the extension will be used.
Benchmarks
> Running on Node v16.8.0
`
Load times:
mrmime 0.963ms
mime/lite 3.281ms
mime 6.751msBenchmark :: plain ("ext")
mime x 598,849 ops/sec ±0.28% (94 runs sampled)
mime/lite x 536,643 ops/sec ±0.11% (97 runs sampled)
mrmime x 835,885 ops/sec ±0.20% (97 runs sampled)
Benchmark :: leading (".ext")
mime x 368,656 ops/sec ±0.19% (99 runs sampled)
mime/lite x 368,318 ops/sec ±0.13% (97 runs sampled)
mrmime x 533,643 ops/sec ±0.10% (96 runs sampled)
Benchmark :: filename ("file.ext")
mime x 326,907 ops/sec ±0.17% (95 runs sampled)
mime/lite x 327,479 ops/sec ±0.12% (98 runs sampled)
mrmime x 512,823 ops/sec ±0.12% (99 runs sampled)
`
Credits
mime serving the community all these years & for being a all-encompassing MIME type library. I've only ever needed lookup/getType functionality – and now ESM support – so mrmime can only ever support 1/3 of what mime offers, at best.mime-db`, who have painstakingly maintained an amazing database for 7+ years.Artwork created by mintinol, which I found here.
Finally, thanks to Tim Branyen for donating the package name :)
MIT © Luke Edwards