Мим
Комплексный компактный модуль типа MIME.
Примечания к версии 2
Версия 2 представляет собой радикальное изменение по сравнению с версией 1.x, как это подразумевает семвер.
lookup()
переименован вgetType()
extension()
переименован вgetExtension()
charset()
иload()
методы были удалены
Если вы предпочитаете устаревшую версию этого модуля, пожалуйста npm install mime@^1
, документацию по версии 1 можно найти здесь .
Установить
NPM
1npm 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
4const mime = require('mime');
mime.getType('txt'); // ⇨ 'text/plain'
mime.getExtension('text/plain'); // ⇨ 'txt'
Подробности об API см . ниже в разделе Mime API .
Облегченная версия
Существует также «облегченная» версия этого модуля, в которой отсутствуют типы, специфичные для конкретного поставщика ( */vnd.*
) и экспериментальные ( */x-*
). Ее вес составляет около 2,5 КБ по сравнению с 8 КБ для полной версии. Чтобы загрузить облегченную версию:
1const 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.6
API.
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
8mime.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
2mime.getType('foo/txt'); // ⇨ null
mime.getType('bogus_type'); // ⇨ null
mime.getExtension(type)
Получить расширение для данного типа mime. Параметры кодировки (часто включенные в заголовки Content-Type) игнорируются.
1
2
3mime.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
4mime.define({'text/x-abc': ['abc', 'abcd']});
mime.getType('abcd'); // ⇨ 'text/x-abc'
mime.getExtension('text/x-abc') // ⇨ 'abc'
Командная строка
1mime [path_or_extension]
Э
1
2> mime scripts/jquery.js
application/javascript
Уценка сгенерирована изsrc/README_js.mdк