Fichiers Javascript .map - Cartes source javascript


358

Récemment, j'ai vu des fichiers avec une .js.mapextension livrés avec certaines bibliothèques JavaScript (comme Angular ), et cela vient de soulever quelques questions dans ma tête:

  • Pourquoi est-ce? Pourquoi les gars d'Angular s'occupent-ils de livrer un .js.mapdossier?
  • Comment puis-je (en tant que développeur JavaScript) utiliser le angular.min.js.mapfichier?
  • Dois-je me soucier de créer des .js.mapfichiers pour mes applications JavaScript?
  • Comment est-il créé? J'ai jeté un coup d'œil angular.min.js.mapet il était rempli de chaînes au format étrange, donc je suppose qu'il n'est pas créé manuellement.

Réponses:


552

Les .mapfichiers sont pour jset css(et maintenant tsaussi) les fichiers qui ont été minifiés. Ils sont appelés SourceMaps. Lorsque vous réduisez un fichier, comme le fichier angular.js, cela prend des milliers de lignes de joli code et le transforme en seulement quelques lignes de code laid. Avec un peu de chance, lorsque vous expédiez votre code en production, vous utilisez le code minifié au lieu de la version complète non minifiée. Lorsque votre application est en production et présente une erreur, le sourcemap vous aidera à prendre votre vilain fichier et vous permettra de voir la version originale du code. Si vous n'aviez pas le sourcemap, toute erreur semblerait au mieux cryptée.

Idem pour les fichiers CSS. Une fois que vous prenez un fichier SASS ou LESS et que vous le compilez en CSS, il ne ressemble en rien à sa forme originale. Si vous activez les sourcemaps, vous pouvez voir l'état d'origine du fichier, au lieu de l'état modifié.

Donc, pour répondre à vos questions dans l'ordre:

  • Pourquoi est-ce? Pour dé-référencer le code uglifié
  • Comment un développeur peut-il l'utiliser? Vous l'utilisez pour déboguer une application de production. En mode développement, vous pouvez utiliser la version complète d'Angular. En production, vous utiliseriez la version minifiée.
  • Dois-je me soucier de créer un fichier js.map? Si vous souhaitez pouvoir déboguer plus facilement le code de production, alors oui, vous devriez le faire.
  • Comment est-il créé? Il est créé au moment de la construction. Il existe des outils de génération qui peuvent créer votre fichier .map pour vous comme il le fait pour d'autres fichiers. https://github.com/gruntjs/grunt-contrib-uglify/issues/71

J'espère que cela a du sens.


20
notez que le fichier de carte ne sera pas envoyé jusqu'à ce que vous l'appeliez, c'est ce qui m'a rendu confus stackoverflow.com/a/27196201/861487
Abdelouahab

2
Merci aaron, c'est l'une des meilleures descriptions que j'ai vues pour sourcemap. Je l'utilise dans gulp et j'avais presque tout appris sur gulp et je me demandais exactement comment les cartes sources étaient utilisées, maintenant je peux me sentir en confiance en l'utilisant. La plupart des plugins gulp sont désormais compatibles, contrairement à il y a un an alors que certains ne l'étaient pas. Je voulais juste dire que cela avait un sens total!
Eric Bishard

@frosty Pour dé-référencer le code uglifié . Pouvez-vous expliquer cela s'il vous plaît? Un .js.mapfichier ne maintient- il pas une relation (souvent appelée référence ) entre un fichier fabriqué à la main et un fichier minifié?
Mohammed Zameer

1
@student, il dit de dé-référence parce que je ne veux pas faire référence au code minifié. Il est minifié et si je le regarde, il est presque sans valeur. Mais, s'il pouvait le renvoyer à la source d'origine, ce serait épique. Et c'est exactement ce qu'est un sourcemap. J'espère que ça aide.
2016 glacial

J'adore cette réponse (merci), mais elle contient 420 likes ... est-ce que je la casse?
Eric Reed


31
  • Comment un développeur peut-il l'utiliser?

Je n'ai pas trouvé de réponse à cela dans les commentaires, voici comment l'utiliser:

  1. Ne liez pas votre fichier js.map dans votre fichier index.html (pas besoin de ça)
  2. Les outils de minifiacation (bons) ajoutent un commentaire à votre fichier .min.js :

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

qui connectera votre fichier .map .

Lorsque les fichiers min.js et js.map sont prêts ...

  1. Chrome: Ouvrez les outils de développement , accédez à l' onglet Sources , vous verrez le dossier sources , où les fichiers d'applications non minifiés sont conservés.

14

Le fichier de mappage mappe le fichier non réduit au fichier réduit. Si vous apportez des modifications dans le fichier non réduit, les modifications seront automatiquement répercutées sur la version réduite du fichier.


2

Juste pour ajouter à la façon d'utiliser les fichiers de carte. J'utilise Chrome pour Ubuntu et si je vais aux sources et que je clique sur un fichier, s'il y a un fichier de carte, un message apparaît me disant que je peux voir le fichier d'origine et comment le faire.

Pour les fichiers angulaires avec lesquels j'ai travaillé aujourd'hui, je clique

Ctrl-P et une liste des fichiers originaux apparaît dans une petite fenêtre.

Je peux ensuite parcourir la liste pour voir le fichier que j'aimerais inspecter et vérifier où le problème pourrait être.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.