Het is al een tijdje geleden dat het Sass-team DartSass heeft uitgeroepen tot de canonieke Sass en in wezen alle andere versies van Sass heeft afgeschaft. Een leuk aspect hiervan is dat DartSass volledig achterwaarts compatibel is met elke oudere Sass. Dus toen we in de Pen Editor naar DartSass gingen, waren er geen problemen.
DartSass was een bevredigende verandering in de Pen Editor omdat het een aantal bugs oploste die veel gebruikers deden struikelen. De functies min() en max() zouden bijvoorbeeld een “incompatibele eenheden” -fout veroorzaken, omdat Sass zelf functies heeft die ook exact dezelfde dingen heten, en bijvoorbeeld max (10px, 1vw) kan niet vooruit worden gecompileerd van tijd. Dat is opgelost in DartSass.
Merk op dat als je echt oude pennen hebt die nog steeds Compass gebruiken (bijv. @import “compass/css3”;) – we die Sass-verwerking nog steeds doorsturen naar een oude versie van Ruby Sass die Compass nog steeds ondersteunt.
Als ik zeg “geen problemen” met de conversie, waren die er echt niet, voor gebruikers. Het was nog een behoorlijk complexe reis voor ons. Ik denk dat de grootste hindernis was om ervoor te zorgen dat alle add-ons voor Sass nog steeds goed werkten. De JavaScript-API heeft bijvoorbeeld een optie met de naam includePaths wanneer u de renderfunctie aanroept. Het doel hiervan is om paden te bieden voor Sass om naar invoer te zoeken als dat nodig is. Dus we zouden in staat moeten zijn om het paden te geven naar kopieën van al die Sass-add-ons en het zal ze ondersteunen. Maar we konden dat gewoon niet laten werken voor ons leven, dus onze processorcode gebruikt de veel complexere importeerfunctie waarmee we gelukkig aan de slag konden. Er zijn andere kleine ruwe randen, maar over het algemeen is DartSass de snelste en soepelste Sass-verwerking die we in tijden hebben gehad.
Meer recent zijn we ook overgestapt op Projects naar DartSass. Nogmaals, geen echte problemen. DartSass is aantoonbaar nog nuttiger in Projects omdat het de @use-syntaxis ontgrendelt, wat de moderne/betere/veiligere/meer capabele versie van import is.