Skip to content

haensl/mimetypes

Repository files navigation

@haensl/mimetypes

Simple JSON object holding MIME types.

NPM

npm version CircleCI

Motivation

This is a simple JSON object collecting MIME types. The rationale for having them in a module is manifold including but not limited to consitency, accuracy, reuse, extensibility, future-proofing and collaboration.

At it's most basic level, this module tries to eliminate magic strings. Magic strings are magical in a bad way, they cast no spells, just confusion and potential bugs.

This MIME types collection is (very) far from complete - in fact it only contains the most commonly used mimetypes at the moment. However, the goal is to collect more as they become relevant to Node developers.

Please feel free to request addition if you need a MIME type not included in this module.

Installation

Via npm

$ npm install -S @haensl/mimetypes

Via yarn

$ yarn add @haensl/mimetypes

Usage

  1. Install @haensl/mimetypes

  2. Use mime types in your projects:

    ESM, i.e. import

    import { json } from '@haensl/mimetypes';
    
    // ...
    
    const route = async (ctx) => {
      // some data from somewhere
      const data = await getData();
    
      // Use the json mimetype
      ctx.set(headers.contentType, json);
    
      ctx.body = JSON.stringify(data);
    }

    CJS, i.e. require

    const { json } = require('@haensl/mimetypes');
    
    // ...
    
    const route = async (ctx) => {
      // some data from somewhere
      const data = await getData();
    
      // Use the json mimetype
      ctx.set(headers.contentType, json);
    
      ctx.body = JSON.stringify(data);
    }

Synopsis

The mimetypes object is a simple JSON object that maps to strings:

{
  "css": "text/css",
  "html": "text/html",
  "ico": "image/x-icon",
  "js": "text/javascript",
  "jpg": "image/jpeg",
  "json": "application/json",
  "jsonLd": "application/ld+json",
  "gif": "image/gif",
  "mp4": "video/mp4",
  "png": "image/png",
  "svg": "image/svg+xml",
  "text": "text/plain",
  "webm": "video/webm",
  "webp": "image/webp",
  "xml": "application/xml"
}