- Notifications
You must be signed in to change notification settings - Fork317
broofa/mime
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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
, withonetwo exceptions:- Direct imports of
mime
propertiesno longer supported mime.define()
cannot be called on the defaultmime
object
- Direct imports of
- ESM module support is required.ESM Module FAQ.
- Requires anES2020 or newer runtime
- Built-in Typescript types (
@types/mime
no longer needed)
npm install mime
For the full version (800+ MIME types, 1,000+ extensions):
importmimefrom'mime';mime.getType('txt');// ⇨ 'text/plain'mime.getExtension('text/plain');// ⇨ 'txt'
mime/lite
is a drop-inmime
replacement, stripped of unofficial ("prs.*
", "x-*
", "vnd.*
") types:
importmimefrom'mime/lite';
Get mime type for the given file path or extension. E.g.
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
mime.getType('foo/txt');// ⇨ nullmime.getType('bogus_type');// ⇨ null
Get file extension for the given mime type. Charset options (often included in Content-Type headers) are ignored.
mime.getExtension('text/plain');// ⇨ 'txt'mime.getExtension('application/json');// ⇨ 'json'mime.getExtension('text/html; charset=utf8');// ⇨ 'html'
Note
New inmime@4
Get all file extensions for the given mime type.
mime.getAllExtensions('image/jpeg');// ⇨ Set(3) { 'jpeg', 'jpg', 'jpe' }
The defaultmime
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 defaultmime
instance:
import{Mime}from'mime/lite';importstandardTypesfrom'mime/types/standard.js';importotherTypesfrom'mime/types/other.js';constmime=newMime(standardTypes,otherTypes);
Each argument is passed to thedefine()
method, below. For examplenew Mime(standardTypes, otherTypes)
is synonomous withnew Mime().define(standardTypes).define(otherTypes)
Note
Only available on customMime
instances
Define MIME type -> extensions.
Attempting to map a type to an already-defined extension willthrow
unless theforce
argument is set totrue
.
mime.define({'text/x-abc':['abc','abcd']});mime.getType('abcd');// ⇨ 'text/x-abc'mime.getExtension('text/x-abc')// ⇨ 'abc'
$ mime scripts/jquery.jstext/javascript
$ mime -r image/jpegjpeg