Потрясающий модуль сообщества

Мим

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

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

Примечания к версии 2

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

  • 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
const mime = require('mime'); mime.getType('txt'); // ⇨ 'text/plain' mime.getExtension('text/plain'); // ⇨ 'txt'

Подробности об API см . ниже в разделе Mime API .

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

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

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

Mime .против mime-типов .vs модули mime-db

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

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

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

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

  • Интеллектуальное разрешение конфликтов типов ( подробности см. в mime-score ).
  • Именование методов соответствует лучшим отраслевым практикам
  • Компактность, например, уменьшенные и сжатые размеры различных модулей:
Модуль Размер
mime-db 18 КБ
mime-types то же, что mime-db
mime 8 КБ
mime/lite 2 КБ

Мим 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
// 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()(см. ниже) по порядку.

mime.getType(pathOrExtension)

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

1 2 3 4 5 6 7 8
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
mime.getType('foo/txt'); // ⇨ null mime.getType('bogus_type'); // ⇨ null

mime.getExtension(type)

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

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

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

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

typeMapпредставляет собой карту типа -> расширений, как описано new Mimeвыше в разделе .

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

1 2 3 4
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