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

Пантомима

Комплексный компактный модуль типа 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-types. Vs. Mime-db модули

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

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

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

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

  • Интеллектуально разрешенные конфликты типов (подробности см. В mime-score )
  • Именование методов соответствует лучшим отраслевым практикам
  • Компактность. Например, уменьшенные + сжатые размеры различных модулей:
Модуль Размер
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()редактируется (см. Ниже) по порядку.

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это карта типа -> расширения, как 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