Skip to content

Latest commit

 

History

History

mime

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

mime

npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

About

650+ file extension to MIME type mappings, based on mime-db.

All MIME type mappings based on mime-db (2021-03-26). For filesize reasons only a small selected number of vendor MIME types (aka */vnd.*) are included. Most of the omitted ones are fairly obscure anyway, so likely not problematic...

Status

STABLE - used in production

Search or submit any issues for this package

Related packages

  • @thi.ng/dl-asset - Local asset download for web apps, with automatic MIME type detection

Installation

yarn add @thi.ng/mime

ES module import:

<script type="module" src="https://cdn.skypack.dev/@thi.ng/mime"></script>

Skypack documentation

For Node.js REPL:

# with flag only for < v16
node --experimental-repl-await

> const mime = await import("@thi.ng/mime");

Package sizes (gzipped, pre-treeshake): ESM: 4.94 KB

Dependencies

API

Generated API docs

This package exposes a MIME_TYPES object which provides mappings from file extensions to MIME types. For each extension one or more MIME types are provided, with the default type always in first position.

import { MIME_TYPES } from "@thi.ng/mime";

MIME_TYPES.mp3
// [ 'audio/mpeg', 'audio/mp3' ]

MIME_TYPES.jpg
// [ 'image/jpeg' ]

MIME_TYPES.jpeg
// [ 'image/jpeg' ]

To simplify lookup and support a fallback type, the package also has preferredType() function:

import { preferredType } from "@thi.ng/mime";

preferredType("mp3")
// "audio/mpeg"

// unknown file extension w/ default fallback type
preferredType("foo")
// "application/octet-stream"

// unknown file extension w/ given fallback type
preferredType("foo", "text/plain")
// "text/plain"

Since v0.3.0 reverse lookups are possible too, using preferredExtension() (also supports fallback):

preferredExtension("image/svg+xml");
// "svg"

preferredExtension("image/foo");
// "bin" (default fallback)

preferredExtension("image/foo", "dat");
// "dat" (custom fallback)

Conversion from mime-db

  1. Download the latest version of mime-db's JSON index and save it to [packages/mime/]tools/mime-db.json
  2. Run the following command to build an up-to-date index (assumes the umbrella repo has been pre-built already). Output will always be be written to src/generated.ts.
# from the thi.ng/umbrella repo root
cd packages/mime
yarn tool:convert

Additional configuration options are available in the tools/convert.ts script.

Authors

Karsten Schmidt

If this project contributes to an academic publication, please cite it as:

@misc{thing-mime,
  title = "@thi.ng/mime",
  author = "Karsten Schmidt",
  note = "https://thi.ng/mime",
  year = 2020
}

License

© 2020 - 2021 Karsten Schmidt // Apache Software License 2.0