素晴らしいコミュニティモジュール

Mime

包括的でコンパクトなMIMEタイプのモジュール。

ビルドステータス

バージョン2の注意事項

バージョン2は、semverが示すように、1.xからの重大な変更です。具体的には次のとおりです。

  • lookup() に名前が変更されました getType()
  • extension() に名前が変更されました getExtension()
  • charset()およびload()メソッドが削除されました

このモジュールのレガシーバージョンをご希望の場合は、こちらをご覧くださいnpm install mime@^1。バージョン1のドキュメントはこちらにあります

インストール

NPM

1
npm install mime

Browser

コードをパッケージ化するにはwebpackbrowserifyなどのバンドラーを使用することをお勧めします 。ただし、ブラウザー対応バージョンは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 5
const mime = require('mime'); mime.getType('txt'); // ⇨ 'text/plain' mime.getExtension('text/plain'); // ⇨ 'txt'

参照してくださいマイムのAPI APIの詳細については、下記を。

ライトバージョン

このモジュールには、ベンダー固有の*/vnd.**/x-*)タイプと実験的な()タイプを省略した「ライト」バージョンもあります。フルバージョンの8KBと比較して、重量は約2.5KBです。ライトバージョンをロードするには:

1
const 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です。

mimev2の時点では、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 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])

[詳細]タイプのマッピングを定義します。

typeMapnew 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.mdRunMDロゴ