An API for MIME type information.
[!Note]
mime@4
is nowlatest
. If you're upgrading frommime@3
, note the following: *mime@4
is API-compatible withmime@3
, with ~~one~~ two exceptions: * Direct imports ofmime
properties no longer supported *mime.define()
cannot be called on the defaultmime
object * ESM module support is required. ESM Module FAQ. * Requires an ES2020 or newer runtime * Built-in Typescript types (@types/mime
no longer needed)
bash
npm install mime
For the full version (800+ MIME types, 1,000+ extensions):
```javascript import mime from 'mime';
mime.getType('txt'); // ⇨ 'text/plain' mime.getExtension('text/plain'); // ⇨ 'txt' ```
mime/lite
is a drop-in mime
replacement, stripped of unofficial ("prs.*
", "x-*
", "vnd.*
") types:
javascript
import mime from 'mime/lite';
mime.getType(pathOrExtension)
Get mime type for the given file path or extension. E.g.
```javascript mime.getType('js'); // ⇨ 'text/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
is returned in cases where an extension is not detected or recognized
javascript
mime.getType('foo/txt'); // ⇨ null
mime.getType('bogus_type'); // ⇨ null
mime.getExtension(type)
Get file extension for the given mime type. Charset options (often included in Content-Type headers) are ignored.
javascript
mime.getExtension('text/plain'); // ⇨ 'txt'
mime.getExtension('application/json'); // ⇨ 'json'
mime.getExtension('text/html; charset=utf8'); // ⇨ 'html'
mime.getAllExtensions(type)
[!Note] New in
mime@4
Get all file extensions for the given mime type.
javascript --run default
mime.getAllExtensions('image/jpeg'); // ⇨ Set(3) { 'jpeg', 'jpg', 'jpe' }
Mime
instancesThe default mime
objects are immutable. Custom, mutable versions can be created as follows...
Create a new, custom mime instance. For example, to create a mutable version of the default mime
instance:
```javascript import { Mime } from 'mime/lite';
import standardTypes from 'mime/types/standard.js'; import otherTypes from 'mime/types/other.js';
const mime = new Mime(standardTypes, otherTypes); ```
Each argument is passed to the define()
method, below. For example new Mime(standardTypes, otherTypes)
is synonomous with new Mime().define(standardTypes).define(otherTypes)
mime.define(type map [, force = false])
[!Note] Only available on custom
Mime
instances
Define MIME type -> extensions.
Attempting to map a type to an already-defined extension will throw
unless the force
argument is set to true
.
```javascript mime.define({'text/x-abc': ['abc', 'abcd']});
mime.getType('abcd'); // ⇨ 'text/x-abc' mime.getExtension('text/x-abc') // ⇨ 'abc' ```
bash
$ mime scripts/jquery.js
text/javascript
bash
$ mime -r image/jpeg
jpeg