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

マイム

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

ビルドステータス

バージョン 2 のメモ

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

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

このモジュールのレガシー バージョンをご希望の場合は、バージョン 1 のドキュメントをここでnpm install mime@^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
const mime = require('mime'); mime.getType('txt'); // ⇨ 'text/plain' mime.getExtension('text/plain'); // ⇨ 'txt'

API の詳細については、以下のMime APIを参照してください

ライト版

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

1
const mime = require('mime/lite');

Mime .vs. mime-types .vs. mime-db モジュール

これらの [人気のある] NPM モジュールの違いについて疑問に思っている方のために、ここで簡単に概要を説明します。

mime-dbMIME タイプ情報の「真実の情報源」です。これは API ではありません。むしろ、IANA、Apache、NGINX、および Node.js コミュニティによって送信されたカスタム マッピングから取得された MIME タイプ定義の正規データセットです。

mime-typesAPIと互換性のある (ような) API ドロップインを提供する mime-db の薄いラッパーですmime @ < v1.3.6

mimev2 の時点では、事前に最適化されたバージョンのmime-dbデータセットがバンドルされた自己完結型モジュールであり、次の特性を持つ簡略化された API を提供します。

  • 型の競合をインテリジェントに解決 (詳細についてはmime-scoreを参照)
  • 業界のベストプラクティスに準拠したメソッドの命名
  • コンパクトなフットプリント: 例: さまざまなモジュールの縮小+圧縮サイズ:
モジュール サイズ
mime-db 18KB
mime-types mime-dbと同じ
mime 8KB
mime/lite 2KB

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
// 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
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
mime.getType('foo/txt'); // ⇨ null mime.getType('bogus_type'); // ⇨ null

mime.getExtension(type)

指定された MIME タイプの拡張子を取得します。Charset オプション (多くの場合、Content-Type ヘッダーに含まれます) は無視されます。

1 2 3
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
mime.define({'text/x-abc': ['abc', 'abcd']}); mime.getType('abcd'); // ⇨ 'text/x-abc' mime.getExtension('text/x-abc') // ⇨ 'abc'

コマンドライン

1
mime [path_or_extension]

E

1 2
> mime scripts/jquery.js application/javascript

から生成されたマークダウンsrc/README_js.mdによるランMDのロゴ