You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
4.0 KiB

  1. # mime-db
  2. [![NPM Version][npm-version-image]][npm-url]
  3. [![NPM Downloads][npm-downloads-image]][npm-url]
  4. [![Node.js Version][node-image]][node-url]
  5. [![Build Status][travis-image]][travis-url]
  6. [![Coverage Status][coveralls-image]][coveralls-url]
  7. This is a database of all mime types.
  8. It consists of a single, public JSON file and does not include any logic,
  9. allowing it to remain as un-opinionated as possible with an API.
  10. It aggregates data from the following sources:
  11. - http://www.iana.org/assignments/media-types/media-types.xhtml
  12. - http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
  13. - http://hg.nginx.org/nginx/raw-file/default/conf/mime.types
  14. ## Installation
  15. ```bash
  16. npm install mime-db
  17. ```
  18. ### Database Download
  19. If you're crazy enough to use this in the browser, you can just grab the
  20. JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to
  21. replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags)
  22. as the JSON format may change in the future.
  23. ```
  24. https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json
  25. ```
  26. ## Usage
  27. <!-- eslint-disable no-unused-vars -->
  28. ```js
  29. var db = require('mime-db')
  30. // grab data on .js files
  31. var data = db['application/javascript']
  32. ```
  33. ## Data Structure
  34. The JSON file is a map lookup for lowercased mime types.
  35. Each mime type has the following properties:
  36. - `.source` - where the mime type is defined.
  37. If not set, it's probably a custom media type.
  38. - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)
  39. - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)
  40. - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)
  41. - `.extensions[]` - known extensions associated with this mime type.
  42. - `.compressible` - whether a file of this type can be gzipped.
  43. - `.charset` - the default charset associated with this type, if any.
  44. If unknown, every property could be `undefined`.
  45. ## Contributing
  46. To edit the database, only make PRs against `src/custom.json` or
  47. `src/custom-suffix.json`.
  48. The `src/custom.json` file is a JSON object with the MIME type as the keys
  49. and the values being an object with the following keys:
  50. - `compressible` - leave out if you don't know, otherwise `true`/`false` to
  51. indicate whether the data represented by the type is typically compressible.
  52. - `extensions` - include an array of file extensions that are associated with
  53. the type.
  54. - `notes` - human-readable notes about the type, typically what the type is.
  55. - `sources` - include an array of URLs of where the MIME type and the associated
  56. extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source);
  57. links to type aggregating sites and Wikipedia are _not acceptable_.
  58. To update the build, run `npm run build`.
  59. ### Adding Custom Media Types
  60. The best way to get new media types included in this library is to register
  61. them with the IANA. The community registration procedure is outlined in
  62. [RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types
  63. registered with the IANA are automatically pulled into this library.
  64. If that is not possible / feasible, they can be added directly here as a
  65. "custom" type. To do this, it is required to have a primary source that
  66. definitively lists the media type. If an extension is going to be listed as
  67. associateed with this media type, the source must definitively link the
  68. media type and extension as well.
  69. [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master
  70. [coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master
  71. [node-image]: https://badgen.net/npm/node/mime-db
  72. [node-url]: https://nodejs.org/en/download
  73. [npm-downloads-image]: https://badgen.net/npm/dm/mime-db
  74. [npm-url]: https://npmjs.org/package/mime-db
  75. [npm-version-image]: https://badgen.net/npm/v/mime-db
  76. [travis-image]: https://badgen.net/travis/jshttp/mime-db/master
  77. [travis-url]: https://travis-ci.org/jshttp/mime-db