Пантомима
Комплексный компактный модуль типа MIME.
Примечания к версии 2
Версия 2 является критическим изменением по сравнению с 1.x, как предполагает semver. В частности:
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
4
5const mime = require('mime');
mime.getType('txt'); // ⇨ 'text/plain'
mime.getExtension('text/plain'); // ⇨ 'txt'
См. Mime API ниже для получения подробной информации об API.
Облегченная версия
Существует также "облегченная" версия этого модуля, в которой отсутствуют типы, зависящие от поставщика ( */vnd.*
) и экспериментальные ( */x-*
). Он весит ~ 2,5 КБ по сравнению с 8 КБ для полной версии. Чтобы загрузить облегченную версию:
1const 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.6
API.
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
9mime.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
3mime.getType('foo/txt'); // ⇨ null
mime.getType('bogus_type'); // ⇨ null
mime.getExtension(type)
Получить расширение для данного типа MIME. Параметры набора символов (часто включаемые в заголовки Content-Type) игнорируются.
1
2
3
4mime.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
5mime.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 к