マイム
包括的でコンパクトな MIME タイプ モジュール。
バージョン 2 のメモ
バージョン 2 は、semver が示すように 1.x からの重大な変更です。
lookup()
に名前変更されましたgetType()
extension()
に名前変更されましたgetExtension()
charset()
メソッドload()
は削除されました
このモジュールのレガシー バージョンをご希望の場合は、バージョン 1 のドキュメントをここでnpm install mime@^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
4const mime = require('mime');
mime.getType('txt'); // ⇨ 'text/plain'
mime.getExtension('text/plain'); // ⇨ 'txt'
API の詳細については、以下のMime APIを参照してください。
ライト版
このモジュールには、ベンダー固有 ( */vnd.*
) および実験的 ( */x-*
) タイプを省略した「ライト」バージョンもあります。完全バージョンの 8 KB と比較して、重量は ~2.5 KB です。ライト バージョンをロードするには:
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 |
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
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 タイプの拡張子を取得します。Charset オプション (多くの場合、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]
E
1
2> mime scripts/jquery.js
application/javascript
から生成されたマークダウンsrc/README_js.mdによる