npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mime-type

v5.0.0

Published

the custom more powerful mime-type utility can work with mime-db.

Downloads

38,522

Readme

mime-type

NPM Version NPM Downloads Node.js Version Build Status Test Coverage

The custom more powerful mime-type utility and built-in mime-db.

fork from mime-types, these features added:

  • you can load mime-types via mime = require('mime-type/with-db') directly
  • mime = new Mime() business, so you could do lookup = mime.lookup.bind(mime).
  • you can lookup the extension with glob match via .lookup(extention) functionality
  • you can add the mime-type via .define(type, mime) functionality
  • you can add many mime-type via .load(mimes) functionality
  • you can search the mime-type via .glob(pattern) functionality
  • you can remove a mime-type via .delete(type) functionality
  • you can clear mime-types via .clear(filter) functionality
  • .exist(type) functionality to check whether a mime-type is exist.
  • .extensions will be deprecated, use mime[type].extensions instead.
  • All functions return undefined if input is invalid or not found.

Otherwise, the API is compatible.

Install

$ npm install mime-type

API

//create an empty mime-type:
import { MimeType } from 'mime-type'
const mime = new MimeType()
//or using mimeType which create an instance and load builtin mime-db directly.
import {mimeType} from 'mime-type/with-db'
//it equals to (you need `npm install mime-db` first):
import db from 'mime-db'
const mime = new MimeType(db)

All functions return undefined if input is invalid or not found.

mime.lookup(path)

Lookup the content-type associated with a file.

mime.lookup('json')             // 'application/json'
mime.lookup('.md')              // 'text/x-markdown'
mime.lookup('file.html')        // 'text/html'
mime.lookup('folder/file.js')   // 'application/javascript'
mime.lookup('folder/.htaccess') // false

mime.lookup('.og?')  // [ 'application/ogg', 'audio/ogg', 'audio/ogg', 'video/ogg' ]
mime.lookup('cats') // false

mime.glob(pattern)

Return all MIME types which matching a pattern(See Minimatch).

mime.glob('*/*')             // ['application/octet-stream']
mime.glob('*/*markdown')     // ['text/x-markdown']
mime.glob('text/j*')         // ['text/jade', 'text/jsx']
mime.glob('unknown/x')       // []

mime.exist(type)

test whether a mime-type is exist. It is an alias for mime.hasOwnProperty

mime.exist('text/x-markdown') // true
mime.exist('unknown/xxx')     // false

mime.define(type, object, duplicationWay?)

define a new mime-type. the duplicationWay is optional the process way of duplication extensions:

  • mime.dupDefault: the default process way.
  • mime.dupOverwrite: the news overwrite the olds
  • mime.dupSkip: just skip it.
  • mime.dupAppend: append the news to the exist extensions.

return the added extensions list if successful or undefined.

mime.define('script/coffee', {
  extensions: ['coffee', 'litcoffee', 'coffee.md']
}, mime.dupAppend)
mime.lookup ('coffee') //[ 'text/coffeescript', 'script/coffee' ]

mime.delete(type)

remove a specified mime-type

mime.delete('script/coffee') //true

mime.clear(filter)

clear all or specified mime-types

the filter could be a string pattern or a function

return the count of deleted mime-types.

mime.clear() //clear all mime-types
mime.clear('text/*') //clear the specified mime-types
mime.clear(function(type, mime){
  return type.substr(0,5) === 'text/'
})

mime.load(mimes)

load a lot of mime-types. return the count of loaded mime-types.

mime.clear() //clear all mime-types
mime.load({
  'script/coffee': {
    extensions: ['coffee', 'coffee.md', 'litcoffee'],
    compressible: true,
    charset: 'utf-8',
    defaultExtension: 'coffee.md'
  },
  'script/python': {
    extensions: ['py', 'py.md', 'litpy'],
    compressible: true,
    charset: 'utf-8'
  }
})

mime.contentType(type)

Create a full content-type header given a content-type or extension.

mime.contentType('markdown')  // 'text/x-markdown; charset=utf-8'
mime.contentType('file.json') // 'application/json; charset=utf-8'

// from a full path
mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8'

mime.extension(type)

Get the default extension for a content-type.

mime.extension('application/octet-stream') // 'bin'

mime.charset(type)

Lookup the implied default charset of a content-type.

mime.charset('text/x-markdown') // 'UTF-8'

var type = mime.types[extension]

A map of content-types by extension.

[extensions...] = mime.extensions[type]

A map of extensions by content-type.

var mimeObject = mime[type]

A map of mime object(IMimeType) by content-type.

export interface IMimeType {
  source: string;
  charset?: string;
  compressible?: boolean;
  extensions: string[]|string;
}

mime.dup: DuplicationProcessWay

the default duplication process way.

See mime.define.

Notes

  • 4.0.0: nodejs >= 8.6
  • 3.0.0: nodejs < 8.6

License

MIT