JavaScript .mapファイル-JavaScriptソースマップ


357

最近.js.map、いくつかのJavaScriptライブラリ(Angularなど)に同梱されている拡張子を持つファイルを見たことがあります。

  • それはなんのためですか?Angularのスタッフが.js.mapファイルを配信するのはなぜですか?
  • (JavaScript開発者として)angular.min.js.mapファイルをどのように使用できますか?
  • .js.mapJavaScriptアプリケーション用のファイルを作成する必要がありますか?
  • どのように作成されますか?調べてみたところangular.min.js.map、奇妙な形式の文字列でいっぱいだったので、手動で作成したものではないと思います。

回答:


550

これらの.mapファイルはjscss(現在tsも)縮小されたファイル用です。それらはSourceMapsと呼ばれます。angular.jsファイルのようにファイルを縮小すると、数千行のきれいなコードが必要になり、数行の見苦しいコードに変換されます。うまくいけば、コードを本番環境に出荷するときは、完全な非縮小バージョンの代わりに縮小コードを使用しています。アプリが本稼働中でエラーが発生した場合、sourcemapは醜いファイルを取得するのに役立ち、コードの元のバージョンを確認できます。ソースマップがない場合、エラーはせいぜい謎めいたものに見えるでしょう。

CSSファイルについても同様です。SASSファイルまたはLESSファイルを取得してCSSにコンパイルすると、元の形式とはまったく異なります。ソースマップを有効にすると、変更された状態ではなく、ファイルの元の状態を確認できます。

したがって、質問に順番に答えるには:

  • それはなんのためですか?醜いコードを逆参照するには
  • 開発者はそれをどのように使用できますか?本番アプリのデバッグに使用します。開発モードでは、Angularの完全版を使用できます。本番環境では、縮小バージョンを使用します。
  • js.mapファイルを作成する必要がありますか?プロダクションコードをより簡単にデバッグできるようにしたい場合は、そうする必要があります。
  • どのように作成されますか?ビルド時に作成されます。他のファイルと同じように、.mapファイルをビルドできるビルドツールがあります。https://github.com/gruntjs/grunt-contrib-uglify/issues/71

これが理にかなっているといいのですが。


19
あなたがそれを呼び出すまで、マップファイルは送信されないことに注意してください、それは私を混乱させたものですstackoverflow.com/a/27196201/861487
Abdelouahab '28

2
aaronに感謝します。これは、sourcemapについて私が見た中でより良い説明の1つです。私はそれをgulpで使用していて、gulpについてほとんどすべてを学び、sourcemapsがどのように使用されているのか正確に疑問に思っていましたが、今では自信を持って使用できます。ほとんどのgulpプラグインは現在互換性がありますが、1年前は互換性がないものもありました。それは完全に理にかなっていると言いたかっただけです!
エリックBishard

@frosty 醜いコードを逆参照する。これについて説明していただけますか?.js.mapファイルは、手作りのファイルと縮小されたファイルの間の関係(しばしば参照と呼ばれる)を維持しませんか?
Mohammed Zameer 2015

1
@studentは、縮小されたコードを参照したくないので、逆参照を示しています。それは縮小されており、私がそれを見ると、ほとんど価値がありません。しかし、それを元のソースに逆参照できる場合は、それは壮大です。そして、それが正確にソースマップです。お役に立てば幸いです。
凍りつくような

私はこの回答が大好きです(ありがとう)が、いいね420あります...それを壊しますか
エリックリード


31
  • 開発者はそれをどのように使用できますか?

私はコメントでこれに対する答えを見つけられませんでした、これがどのように使用できるかです:

  1. js.mapファイルをindex.htmlファイルにリンクしないでください(その必要はありません)。
  2. Minifiacationツール(優れたツール)が.min.jsファイルにコメントを追加します。

    //#sourceMappingURL = yourFileName.min.js.map

.mapファイルを接続します。

ときmin.jsjs.mapファイルは準備ができています...

  1. Chrome:dev-toolsを開き、[ ソース ]タブに移動します。縮小されていないアプリケーションファイルが保存されているソースフォルダーが表示されます。

14

マップファイルは、非縮小ファイルを縮小ファイルにマップします。縮小されていないファイルに変更を加えると、変更は自動的にファイルの縮小バージョンに反映されます。


2

マップファイルの使用方法を追加するだけです。私はubuntuにChromeを使用しています。ソースに移動してファイルをクリックすると、マップファイルがある場合、元のファイルとその方法を表示できることを通知するメッセージが表示されます。

今日使用したAngularファイルについては、

Ctrl-Pと元のファイルのリストが小さなウィンドウに表示されます。

次に、リストを参照して、調査したいファイルを表示し、問題の場所を確認できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.