Mime
包括的でコンパクトなMIMEタイプのモジュール。
バージョン2の注意事項
バージョン2は、semverが示すように、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タイプ、1,000以上の拡張機能)の場合:
1
2
3
4
5const mime = require('mime');
mime.getType('txt'); // ⇨ 'text/plain'
mime.getExtension('text/plain'); // ⇨ 'txt'
参照してくださいマイムのAPI APIの詳細については、下記を。
ライトバージョン
このモジュールには、ベンダー固有の*/vnd.*
(*/x-*
)タイプと実験的な()タイプを省略した「ライト」バージョンもあります。フルバージョンの8KBと比較して、重量は約2.5KBです。ライトバージョンをロードするには:
1const mime = require('mime/lite');
Mime.vs。mime-types.vs。mime-dbモジュール
これらの[人気のある] NPMモジュールの違いについて疑問に思っている方のために、簡単な要約を示します...
mime-db
はMIMEタイプ情報の「信頼できる情報源」です。これはAPIではありません。むしろ、IANA、Apache、NGINX、およびNode.jsコミュニティによって送信されたカスタムマッピングから取得されたmimeタイプ定義の正規データセットです。
mime-types
は、APIと互換性のあるAPIドロップインを提供するmime-dbの薄いラッパーmime @ < v1.3.6
です。
mime
v2の時点では、mime-db
データセットの事前に最適化されたバージョンにバンドルされた自己完結型のモジュールであり、次の特性を備えた簡略化されたAPIを提供します。
- インテリジェントに解決された型の競合(詳細についてはmime-scoreを参照)
- 業界のベストプラクティスと一致するメソッドの命名
- コンパクトな設置面積。例:さまざまなモジュールの縮小+圧縮サイズ:
モジュール | サイズ |
---|---|
mime-db |
18 KB |
mime-types |
mime-dbと同じ |
mime |
8 KB |
mime/lite |
2 KB |
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'
複数のmap引数が指定されている場合、各マップが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 に