Che cos'è il formato di file MAP?
Un file .map è un documento JSON in formato testo semplice che collega l'output minimizzato o compilato - un file .js raggruppato o un foglio di stile CSS compilato - al codice sorgente originale leggibile dall'uomo. Strumenti di build come webpack, Vite, esbuild e il compilatore TypeScript (tsc) generano automaticamente i file .map insieme al loro output.
Il formato è stato standardizzato come Source Map Revision 3 intorno al 2011 ed è ora universalmente supportato in ogni principale pipeline di build JavaScript e CSS. Una source map si trova accanto al file che descrive - app.js produce app.js.map, styles.css produce styles.css.map - e il file minimizzato vi fa riferimento tramite un commento finale: //# sourceMappingURL=app.js.map (o /*# sourceMappingURL=styles.css.map */ per il CSS).
Il cuore di ogni source map è il campo mappings: una stringa compatta codificata in Base64 VLQ che registra una traduzione segmento per segmento da ogni posizione di carattere nell'output alla corrispondente riga e colonna nel sorgente originale. Altri campi contengono i percorsi dei file originali (sources), opzionalmente il testo sorgente completo (sourcesContent) e i nomi dei simboli (names).
Gli strumenti per sviluppatori del browser - Chrome DevTools, Firefox Developer Tools e Safari Web Inspector - utilizzano i file .map in modo trasparente. Gli sviluppatori possono impostare punti di interruzione in TypeScript o SCSS ed esaminare il codice originale anche se il browser esegue l'output minimizzato. Il file .map viene recuperato solo quando i DevTools sono aperti; non aggiunge alcun sovraccarico alla normale navigazione.
Sicurezza e incolumità
RISCHIO: LOWUna source map è un JSON passivo e non esegue codice, quindi aprirne una è innocuo. La vera preoccupazione riguarda la privacy/sicurezza per gli sviluppatori: le source map distribuite in produzione possono esporre il codice sorgente originale non minimizzato - e talvolta commenti, percorsi di file o sourcesContent - a chiunque apra i DevTools. Molti team rimuovono o bloccano deliberatamente i file .map sui server pubblici per questo motivo. Se trovi file .map imprevisti su un sito live, potrebbe trattarsi di un problema di divulgazione di informazioni da correggere.
Dettagli del formato
in sintesi- Dati GIS MapInfo (.map + .tab) - Archivio di geometria binaria per una tabella MapInfo; aperto tramite il file .tab associato in QGIS o MapInfo Pro, non singolarmente.
- Mappa di livello di gioco - Geometria di livello in testo semplice dagli editor id Tech / Quake / Source / Radiant, compilata in un livello binario (es. .bsp) per il gioco.
- Mappa del linker / debug - Elenco in testo semplice di indirizzi di simboli e layout di memoria emesso da un compilatore/linker per il debug dei crash.
Programmi che aprono file MAP
Dettagli tecnici
specifiche approfondite| Tipo di formato | JSON in testo semplice (UTF-8); nessun magic byte binario |
| Specifica | Source Map Revision 3 (v3) |
| Tipo MIME | application/json |
| Codifica dei mapping | Base64 VLQ (Variable-Length Quantity) - codifica gli offset di riga e colonna per ogni segmento di output |
| Campi JSON obbligatori | version (deve essere uguale a 3), sources (array di percorsi dei file originali), mappings (stringa codificata in VLQ) |
| Campi JSON opzionali | sourcesContent (testo originale incorporato), names (elenco simboli), sourceRoot (prefisso del percorso per tutti i sorgenti) |
| Convenzione di denominazione | Nome del file di output con .map aggiunto: app.js → app.js.map, styles.css → styles.css.map |
| Commento link sorgente (JS) | //# sourceMappingURL=filename.js.map - aggiunto all'ultima riga del file minimizzato |
| Commento link sorgente (CSS) | /*# sourceMappingURL=filename.css.map */ - aggiunto al foglio di stile compilato |
| Generatori tipici | webpack, Vite, esbuild, compilatore TypeScript (tsc), Dart Sass, Rollup, Parcel |
| Consumato da | Browser DevTools: Chrome DevTools, Firefox Developer Tools, Safari Web Inspector, Edge DevTools |
| Precisione di mappatura | Livello colonna: ogni segmento VLQ mappa una singola colonna di output su riga e colonna del sorgente |
| Dimensione del file | In genere 2-10 volte la dimensione dell'output minimizzato; aumenta ulteriormente quando sourcesContent è incorporato |
| Alternativa di consegna HTTP | Intestazione di risposta X-SourceMap (deprecata; il commento inline è il metodo preferito) |
| Attivazione DevTools | Recuperato solo quando i DevTools del browser sono aperti; non richiesto durante il normale caricamento della pagina |
| Rilasciato | Source Map format v3 (~2011); ubiquitous with modern JS/CSS build tooling |
| Standard aperto | Sì · royalty-free |
| Specifica | sourcemaps.info |
Conversioni MAP
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file MAP.