Удивительный модуль сообщества

мим

Комплексный, компактный модуль MIME-типа.

Статус сборки

Версия 2 Примечания

Версия 2 является серьезным изменением от 1.x, как подразумевает semver.

  • lookup() переименован в getType()
  • extension() переименован в getExtension()
  • методы charset() и load() были удалены

Если вы предпочитаете устаревшую версию этого модуля, пожалуйста, npm install mime@^1 Документацию по версии 1 можно найти здесь .

устанавливать

NPM

1
npm install mime

Browser

Для упаковки кода рекомендуется использовать такой пакет, как webpack или browserify, однако готовые для браузера версии доступны через wzrd.in. Например, для полной версии:

1 2 3 4
<script src="https://wzrd.in/standalone/mime@latest"></script> <script> mime.getType(...); // etc. <script>

Или, для версии mime/lite :

1 2 3 4
<script src="https://wzrd.in/standalone/mime%2flite@latest"></script> <script> mimelite.getType(...); // (Note `mimelite` here) <script>

Быстрый старт

Для полной версии (800+ MIME-типов, 1000+ расширений):

1 2 3 4 5
const mime = require('mime'); mime.getType('txt'); // ⇨ 'text/plain' mime.getExtension('text/plain'); // ⇨ 'txt'

См. Mime API ниже для деталей API.

Облегченная версия

Существует также «облегченная» версия этого модуля, в которой пропущены специфичные для поставщика ( */vnd.* ) И экспериментальные ( */x-* ) типы. Он весит ~ 2,5 КБ по сравнению с 8 КБ для полной версии. Чтобы загрузить облегченную версию:

1
const mime = require('mime/lite');

Mime .vs. Mime-типы .vs. Mime-db модули

Для тех из вас, кто интересуется разницей между этими [популярными] модулями NPM, вот краткое изложение ...

mime-db является «источником правды» для информации о типе MIME, а не API. Скорее, это канонический набор данных определений типов mime, извлеченных из IANA, Apache, NGINX и пользовательских сопоставлений, представленных сообществом Node.js. ,

mime-types - это тонкая оболочка для mime-db, которая обеспечивает API-совместимость (ish) с API-интерфейсом mime @ < v1.3.6 .

mime , начиная с версии v2, представляет собой автономный модуль в комплекте с предварительно оптимизированной версией набора данных mime-db который предоставляет упрощенный API со следующими характеристиками:

  • Интеллектуально разрешенные конфликты типов (подробности см. В mime- Score)
  • Наименование методов соответствует лучшим отраслевым практикам
  • Compact footprint. Eg The minified+compressed sizes of the various modules :
модуль размер
mime-db 18 кб
mime-types такой же как mime-db
mime 8 кб
mime/lite 2 КБ

Mime API

Оба require('mime') и require('mime/lite') возвращают экземпляры класса MIME, описанные ниже.

new Mime(typeMap, ... more maps)

Большинству пользователей этого модуля не нужно создавать экземпляры Mime напрямую, однако, если вы хотите создать пользовательские сопоставления, вы можете сделать это следующим образом ...

1 2 3 4 5 6 7 8 9 10 11 12 13 14
// Require Mime class const Mime = require('mime/Mime'); // Define mime type -> extensions map const typeMap = { 'text/abc': ['abc', 'alpha', 'bet'], 'text/def': ['leppard'] }; // Create and use Mime instance const myMime = new Mime(typeMap); myMime.getType('abc'); // ⇨ 'text/abc' myMime.getExtension('text/def'); // ⇨ 'leppard'

Если указано более одного аргумента карты, каждая карта define() по порядку define() (см. Ниже).

mime.getType(pathOrExtension)

Получить тип MIME для данного пути или расширения. Например

1 2 3 4 5 6 7 8 9
mime.getType('js'); // ⇨ 'application/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 возвращается в случаях, когда расширение не обнаружено или не распознано

1 2 3
mime.getType('foo/txt'); // ⇨ null mime.getType('bogus_type'); // ⇨ null

mime.getExtension(type)

Получить расширение для данного типа MIME. Параметры кодировки (часто включаемые в заголовки Content-Type) игнорируются.

1 2 3 4
mime.getExtension('text/plain'); // ⇨ 'txt' mime.getExtension('application/json'); // ⇨ 'json' mime.getExtension('text/html; charset=utf8'); // ⇨ 'html'

mime.define(typeMap[, force = false])

Определите [больше] отображений типов.

typeMap - это карта typeMap > расширений, как описано выше в new Mime .

По умолчанию этот метод выдаст ошибку, если вы попытаетесь отобразить тип на расширение, которое уже назначено другому типу. Передача true для аргумента force подавит это поведение (переопределяя любое предыдущее сопоставление).

1 2 3 4 5
mime.define({'text/x-abc': ['abc', 'abcd']}); mime.getType('abcd'); // ⇨ 'text/x-abc' mime.getExtension('text/x-abc') // ⇨ 'abc'

Командная строка

1
mime [path_or_extension]

Например,

1 2
> mime scripts/jquery.js application/javascript

Уценка, сгенерированная из src/README_js.md Логотип RunMD