Récemment, j’ai vu des fichiers avec l’extension .js.map
livrés avec certaines bibliothèques JavaScript (comme Angular ), et cela ne faisait que me poser quelques questions:
.js.map
?angular.min.js.map
?.js.map
pour mes applications JavaScript?angular.min.js.map
et il était rempli de chaînes au format étrange, donc je suppose qu'il n'a pas été créé manuellement.Les fichiers .map
sont destinés aux fichiers js
et css
(et maintenant ts
également) qui ont été minifiés. Ils s'appellent SourceMaps. Lorsque vous réduisez un fichier, comme le fichier angular.js, il prend des milliers de lignes de joli code et ne le transforme qu'en quelques lignes de code laid. Heureusement, lorsque vous expédiez votre code en production, vous utilisez le code minifié au lieu de la version complète et non modifiée. Lorsque votre application est en production et présente une erreur, le plan source vous aidera à récupérer votre fichier laide et vous permettra de voir la version originale du code. Si vous n'aviez pas le plan source, alors toute erreur semblerait au mieux cryptique.
Même chose pour les fichiers CSS. Une fois que vous prenez un fichier SASS ou LESS et le compilez en CSS, il ne ressemble en rien à sa forme originale. Si vous activez sourcemaps, vous pouvez voir l'état d'origine du fichier au lieu de l'état modifié.
Alors, pour répondre à vos questions dans l'ordre:
J'espère que cela a du sens.
Je voulais juste me concentrer sur la dernière partie de la question; Comment les fichiers de carte source sont-ils créés? en listant les outils de construction que je connais qui peuvent créer des cartes source.
grunt-contrib-uglify
gulp-uglify
--create_source_map
Je ne sais pas s'il existe d'autres outils pouvant créer des cartes sources.
Je n'ai pas trouvé de réponse à cela dans les commentaires, voici comment utiliser:
Les outils de minifiacation (les 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 ...
Le fichier de carte mappe le fichier non minié sur le fichier minifié. Si vous apportez des modifications dans le fichier non modifié, les modifications seront automatiquement répercutées sur la version modifiée du fichier.
Juste pour ajouter à la façon d'utiliser les fichiers de carte. J'utilise chrome pour Ubuntu et si je vais dans les sources et que je clique sur un fichier, s'il y a un fichier de carte, un message m'indique que je peux voir le fichier d'origine et comment le faire.
Pour les fichiers Angular avec lesquels j'ai travaillé aujourd'hui, je clique sur
Ctrl-P et une liste des fichiers originaux apparaissent dans une petite fenêtre.
Je peux ensuite parcourir la liste pour afficher le fichier que je souhaite inspecter et vérifier où peut se trouver le problème.