Slik bruker du kildekart for bedre debugging av forprosessorer

CSS preprosessorer har blitt et uunnværlig verktøy for de fleste utviklere i fremtiden. Til tross for de mange fordelene de gir, ved hjelp av verktøy som LESS, presenterer Stylus eller Sass også nye problemer, hvorav vi skal snakke om (og løse) i denne opplæringen.

Problemet

Med mindre du jobber på et lite nettsted med svært få sider, er det en vanlig best praksis å dele stilarket i flere moduler, eller partials. For eksempel kan vi skille stilene for navigering til deres eget delvis navngitte navbar.scss (forprosessoren her er Sass). Deretter importerer vi dette, sammen med andre deler, til en enkelt primær stilark ved hjelp av @importere direktivet, hvorpå de vil bli samlet inn i en enkelt CSS-fil. Det er her problemet begynner.

Nettlesere analyserer kompilert CSS, ikke arbeidsfilene dine, noe som i siste instans gjør stilfeilingen vanskeligere. Feilsøkingsprosessen kan være veldig tungvint hvis du håndterer et storskala prosjekt med dusinvis av stilark for å håndtere. Å finne ut hvor kompilerte stiler stammer, kan være nesten umulig.

Som du kan se nedenfor, refererer webinspektøren til .css-filen, og forteller oss at stilen for kropp er erklært på linje 270. Det hjelper oss ikke mye, fordi i våre arbeidsfiler det faktisk er erklært i stillas.løs på linje 27.

Kildekartsløsningen

Bruker en kilde kart vil bygge bro over disse språkene i felles stil. Kildekart er separat genererte filer som tillater nettlesere å spore kompilert CSS tilbake til sin opprinnelige kilde. Faktisk kan kildekart brukes i mange kodende miljøer:

"Kildekart tilbyr en språk-agnostisk måte å kartlegge produksjonskoden til den opprinnelige koden som ble skrevet." - Sayanee Basu

For våre formål gjør kildeskart stilfeil med en CSS preprosessor som kjent som å jobbe med vanlig CSS. Som du kan se nedenfor, viser nettinspektøren nå stilreferansen til den opprinnelige kilden, takket være kildekartet.

Generering av en kildekart

For å komme i gang må vi først generere en kildekartfil (.map) sammen med det genererte CSS. Denne .map-filen inneholder JSON formatert kode for å fungere som en referanse mellom kompilert fil og den opprinnelige kilden. Sass la til støtte for generering av kildekart i versjon 3.3, LEST lagt til det i versjon 1.5.0 og du kan også finne informasjon om Stylus-støtte av kildekart i dokumentasjonen..

Alle har sin egen preferanse når det gjelder å plukke opp verktøyene som passer inn i arbeidsflyten. Bortsett fra det innfødte Command Line Interface (CLI) som hver CSS preprocessor gir, har vi også noen andre alternativer som Grunt and Gulp, selv applikasjoner som Codekit.

Bruke CLI

Alle de viktigste preprosessorer har muligheten til å lage et kildekart gjennom CLI. 

MINDRE

Med mindre kan du inkludere --source-kartet flagg denne måten:

lessc styles.less> styles.css --source-map = styles.css.map

Dette eksemplet kompilerer styles.less i styles.css, samtidig som du genererer kildekartfilen med navnet satt til "styles.css.map".

sass

Sass-brukere kan bruke --sourcemap (uten bindestrek) for å gjøre det samme, for eksempel:

sass styles.scss: styles.css --surkemap

I motsetning til MINDRE, --sourcemap flagg i Sass trenger oss til å spesifisere filnavnet. Sass vil navngi filen med samme navn som det sammensatte stilarket som standard. Så, gitt det ovennevnte eksemplet, vil kildenavnetavnet fortsatt være "styles.css.map".

Stylus

På samme måte som Sass, krever Stylus bare --sourcemap flagg, eller i tillegg tilbyr stenografi -m:

stylus -m styles.styl

Igjen, dette gir oss "styles.css.map".

Bruke en oppgaveløper

Hvis du foretrekker å bruke en oppgaveløper som Grunt, bruk grunt-contrib-mindre, grynt-contrib-sass eller grynt-contrib-pennen å kompilere CSS, og deretter inkludere muligheten til å generere kildekartet. Eksempelet nedenfor gjør det samme som vi gjorde i det forrige eksempelet; det genererer et kildeskjema med navnet "styles.css.map" fra vår styles.less-fil.

modul.grp ); grunt.loadNpmTasks ( 'grov-contrib-mindre'); grunt.registerTask ('standard', ['mindre']); ;

Sass-brukere kan bruke grunt-contrib-sass og sette alternativet på samme måte, for eksempel:

module.exports = funksjon (grunt) grunt.initConfig (sass: alternativer: sourcemap: 'auto', filer: 'styles.css': 'styles.scss'); grunt.loadNpmTasks ( 'grov-contrib-sass'); grunt.registerTask ('standard', ['sass']); ;

Bruke et applikasjonsgrensesnitt

Den enkleste måten, spesielt hvis du ikke er så komfortabel med kommandolinjen, er å bruke et grafisk grensesnitt som Codekit, Prepros eller Koala. Med applikasjonen er opprettelse av et kildeskart like enkelt som et enkelt klikk.

Alternativet Kildekart i kodekit.

Når kildekartet er opprettet, finner du en ny fil .kart samt referansen som peker på kildekartfilen nederst i det sammensatte stilarket. Denne referansebeskrivelsen vil vanligvis se litt ut som:

/ * # sourceMappingURL = style.css.map * /

Kildekartstøtte i nettlesere

Alle de nyeste nettleserne støtter kildekart. Safari aktiverer seg når kildekartfilen er tilgjengelig, uten behov for konfigurasjon. I de andre nettleserne, slik som Firefox, Chrome og Opera, kan kildekart være slått av som standard. I så fall må du bytte innstillingene.

Firefox

I Firefox er kildekartinspeksjon bare tilgjengelig via de innebygde DevTools fra Firefox. Firebug - den gang populære debugging-tillegget for Firefox - har ennå ikke lagt til denne funksjonen, dessverre. Start derfor Firefox DevTools og aktiver kildekart ved å høyreklikke på hvilken som helst stilreferanse og velg "Vis originale kilder" fra hurtigmenyen.

Chrome

I Chrome (samt Opera 12 og oppover) klikker du på "gear" -ikonet i nettinspektøren og sørger for at Aktiver CSS kildekart er sjekket.

Når kildekartfilen er opprettet og funksjonen i nettleseren er aktivert, bør du finne inspektøren som peker på den opprinnelige kilden. I dette tilfellet kan du se inspektøren direkte referere til stillas.løs.

Wrapping Up

Nå, med kraften til kildekartene ved fingertipsene dine, kan du feilsøke kompilerte stiler akkurat som webdesignere har gjort med CSS i mange år. Så ikke glem å generere et kildeskart for ditt neste sammensatte stilark!