Cuando comencé a usar sass, una de las cosas más atractivas era compass ya que la cantidad de mixin que tiene es de verdad impresionante.

Las más populares son:

  • Prefijos de navegadores
  • Generar sprites
  • Dimensiones de imágenes.

La que yo particularmente más usaba era la primera, los prefijos de los navegadores. En lugar de tener que escribir

.elemento {
-moz-border-radius: 50px;
-webkit-border-radius: 50px;
border-radius: 50px;
}

Simplemente se puede escribir

.elemento {
@include border-radius(50px);
}

Acorta mucho el tiempo de desarrollo. Además de esto, compass da muchos mixins propios, como por ejemplo @include adjust-font-size-to(); que acepta como parámetro un tamaño de fuente y genera el tamaño en ems y da un line-height correspondiente a una configuración previa que tenía que colocar de tamaños bases. Muy útil para mantener el ritmo vertical

Sin embargo, desde hace unos meses he dejado de usar los @include para los prefijos en favor de utilizar autoprefixer que tiene varias ventajas sobre la manera que lo hace compass:

  1. Hasta hace poco, compass solo actualizaba sus prefijos manualmente cuando salía una nueva versión, entonces si alguno cambiaba había que esperar la nueva versión de compass para que se actualizara. En cambio autoprefixer los saca directamente de caniuse que siempre está actualizada.
  2. Puedes controlar qué navegador soportas, la que es para mi la ventaja más valiosa. Con compass solo tenías el soporte más estándar, pero si querías colocar soporte para navegadores más antiguos normalmente implicaba colocar más @includes o tu mismo colocar el elemento. En cambio, con autoprefixer pasas como parámetro los navegadores que quieres soportar y listo. El script se encarga del resto.
  3. No tener que estar incluyendo @includes por toda la hoja de estilo. Si mañana por algún milagro se dejan de usar los prefijos de navegadores, tendrás por toda tu hoja muchos estilos obsoletos.

A pesar de esto, siempre incluía compass en mi proyecto y por esta razón compilaba mi sass usando ruby. Pero existe otra manera de compilar sass que es usando Libsass, el cual está escrito con C/C++. Ya tenía meses leyendo pero cuando salió no soportaba muchas funciones de sass, solo lo más básico. Pero con la última versión ya soporta casi todas las funciones de sass, no todas aún pero por lo menos soporta todas las que yo uso.

La ventaja es que libsass es mucho más rápido que ruby compilando sass, tiene sentido ya que está escrito con C/C++.

Desde hace aproximadamente un mes siento que mis hojas de estilo se compilan cada vez más lento, llegando a tardar de 6 a 7 segundos cada vez que le daba a salvar, que como todos los que escribimos CSS sabemos es prácticamente cada minuto. Esto estaba haciendo que mi flujo de trabajo fuera cada vez más lento, así que hace unos días decidí hacer la prueba y ver cuál era de verdad la diferencia de velocidad usando libsass.

Agarré un proyecto que ese mismo día había comenzado (así que no estaba muy avanzado) y quité pocos @include que sabía que eran de compass y eliminé el archivo config.rb. Y cuando le di a salvar al proyecto, se compiló al instante. Me sorprendió mucho, así que dije “debe ser que este proyecto no tiene casi nada así que es rápido”. Entonces decidí probar con un proyecto que acababa de terminar, un proyecto más o menos grande que tenía como 60 archivos parciales y en general muchas funciones. Hice lo mismo. Quité todas las cosas que eran de compass y lo compilé de nuevo y la velocidad fue la misma. La velocidad bajó de 6 a 7 segundos cada vez que le daba a salvar a menos de un segundo. Terminé de programar el proyecto que había comenzado en mucho menos tiempo del que tenía planeado originalmente, y todo fue por el cambio de herramienta.

Ahora, quizás se estén preguntando “qué tiene que ver compass con la manera que compilo mi sass”, y la respuesta es que compass no tiene soporte para libsass. Ya no uso ninguna de las bondades que da un framework como compass, pero si quieres una alternativa, recomiendo Bourbon que es un muy buen framework que corre perfectamente con libsass.

Demás está decir que eliminé compass de mi template de inicio y planeo usar libsass de ahora en adelante.