544 Stimmen

Wie kann ich JavaScript-Quellkarten (.map-Dateien) verwenden?

Kürzlich habe ich Dateien mit der Erweiterung .js.map gesehen, die mit einigen JavaScript-Bibliotheken (wie Angular) ausgeliefert wurden, und das hat einfach ein paar Fragen in meinem Kopf aufgeworfen:

  • Wofür ist es gut? Warum kümmern sich die Leute bei Angular darum, eine .js.map Datei bereitzustellen?
  • Wie kann ich (als JavaScript-Entwickler) die Datei angular.min.js.map verwenden?
  • Sollte ich mich darum kümmern .js.map Dateien für meine JavaScript-Anwendungen zu erstellen?
  • Wie wird sie erstellt? Ich habe einen Blick auf angular.min.js.map geworfen und es war mit seltsam formatierten Zeichen gefüllt, also gehe ich davon aus, dass sie nicht manuell erstellt wird.

817voto

frosty Punkte 19476

Die .map-Dateien sind für JavaScript- und CSS-Dateien (und jetzt auch für TypeScript-Dateien), die minifiziert wurden. Sie werden als Source Maps bezeichnet. Wenn Sie eine Datei minifizieren, wie z.B. die Datei angular.js, wird Tausende von Zeilen hübschen Codes auf wenige Zeilen hässlichen Codes reduziert. Hoffentlich verwenden Sie beim Versand Ihres Codes an die Produktion den minifizierten Code anstelle der vollständigen, unminifizierten Version. Wenn Ihre App in der Produktion ist und einen Fehler hat, wird die Source Map Ihnen helfen, Ihren hässlichen Code zu nutzen und Ihnen ermöglichen, die ursprüngliche Version des Codes zu sehen. Wenn Sie keine Source Map hätten, würde jeder Fehler höchstens kryptisch erscheinen.

Gleiches gilt für CSS-Dateien. Wenn Sie eine Sass oder Less-Datei nehmen und sie in CSS kompilieren, sieht sie überhaupt nicht mehr aus wie ihre ursprüngliche Form. Wenn Sie Sourcemaps aktivieren, können Sie den ursprünglichen Zustand der Datei sehen, anstatt des geänderten Zustands.

Also, um Ihre Fragen der Reihe nach zu beantworten:

  • Wofür ist es? Uglified-Code zu de-referenzieren
  • Wie kann ein Entwickler es verwenden? Sie verwenden es zum Debuggen einer Produktions-App. Im Entwicklungsmodus können Sie die Vollversion von Angular verwenden. In der Produktion würden Sie die minifizierte Version verwenden.
  • Sollte ich mir Gedanken machen, eine js.map-Datei zu erstellen? Wenn Ihnen daran liegt, die Debugging von Produktionscode einfacher zu machen, dann sollten Sie es tun.
  • Wie wird es erstellt? Es wird zur Build-Zeit erstellt. Es gibt Build-Tools, die Ihre .map-Datei erstellen können, genauso wie sie andere Dateien erstellen. Sourcemaps scheitern, wenn die Ausgabedatei sich nicht im Projektstammverzeichnis befindet #71

Ich hoffe, das ergibt Sinn.

66voto

garfunkel61 Punkte 1439

Wie kann ein Entwickler es verwenden?

  1. Verlinken Sie nicht Ihre js.map Datei in Ihrer index.html Datei (dafür besteht kein Bedarf).

  2. Minifizierungstools (gute) fügen einen Kommentar zu Ihrer .min.js Datei hinzu:

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

    der Ihre .map Datei verbinden wird.

    Wenn die min.js und js.map Dateien bereit sind...

  3. Chrome: Öffnen Sie die Entwicklertools, navigieren Sie zum Register Quellen. Dort sehen Sie den Quellen Ordner, in dem die unminifizierten Anwendungsdateien aufbewahrt werden.

50voto

Muhammad Reda Punkte 25423

Ich wollte mich nur auf den letzten Teil der Frage konzentrieren; Wie werden Quellkarten-Dateien erstellt? indem ich die Build-Tools aufliste, von denen ich weiß, dass sie Quellkarten erstellen können.

  1. Grunt: mit dem Plugin grunt-contrib-uglify
  2. Gulp: mit dem Plugin gulp-uglify
  3. Google Closure: mit dem Parameter --create_source_map

18voto

Surendra Yadav Punkte 181

Die Kartendatei ordnet die nicht minifizierte Datei der minifizierten Datei zu. Wenn Sie Änderungen in der nicht minifizierten Datei vornehmen, werden die Änderungen automatisch in der minifizierten Version der Datei reflektiert.

4voto

rotato poti Punkte 121

Nur um zu ergänzen, wie man Karten-Dateien verwendet: Ich verwende Google Chrome für Ubuntu und wenn ich zu den Quellen gehe und auf eine Datei klicke, erscheint eine Meldung, die mir sagt, dass ich die Originaldatei anzeigen kann und wie das geht.

Für die Angular-Dateien, mit denen ich heute gearbeitet habe, klicke ich auf Strg + P und es erscheint eine Liste von Originaldateien in einem kleinen Fenster.

Dann kann ich durch die Liste blättern, um die Datei anzusehen, die ich überprüfen möchte und herauszufinden, wo das Problem sein könnte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X