Conociendo a LibSass

LibSass se está volviendo más y más popular cada día. No pasa un día sin que alguien diga que ha trasladado con orgullo su código base a LibSass. Oh, genial.

¿Te sientes un poco perdido? ¿No está seguro de qué es LibSass, cómo funciona y cuáles son las principales diferencias en comparación con el Sass original? Pues no te preocupes mi amigo, te tengo cubierto.

¿Qué es LibSass??

Antes de explicar qué es LibSass, recapitulemos primero qué Hablar con descaro a es. Sass es un preprocesador CSS escrito en Ruby. Para usar Sass, tienes que instalarlo como joya (un paquete de Ruby) en su máquina. Luego puede interactuar con Sass desde CLI (interfaz de línea de comandos) o con una aplicación como Prepros.

Actuación

LibSass es un puerto de Sass escrito en C / C ++. Verás, Ruby no es el lenguaje más rápido en la tierra. Y resulta ser bastante lento cuando se trata de Sass. 

"Ruby no es uno de los idiomas más destacados del mundo, por decir lo menos". - Kamil Bielawski

No siendo un desarrollador de Ruby, no puedo decir exactamente por qué; quizás la escritura de archivos no sea tan eficiente como podría ser, honestamente no lo sé. Pero por el motivo que sea, Ruby Sass es lento y se vuelve más lento en proyectos masivos..

Esto llegó al punto en que algunas personas se cansaron del retraso en el rendimiento y decidieron comenzar a escribir Sass en C / C ++, para acelerar los tiempos de compilación. Lo que se les ocurrió fue LibSass.

Envoltura

Realmente no puedes usar LibSass solo: necesitas un envoltorio. Por ejemplo, Node-Sass es un contenedor NodeJS para LibSass. Le permite usar Node-Sass para compilar su Sass de Node usando LibSass debajo. 

Node-Sass en npm

También hay SassC, Perl-Libsass, PHP-Sass e incluso Ruby-LibSass, todos usando LibSass debajo. Sin embargo, estos últimos ejemplos no están totalmente actualizados, por lo que usamos Node-Sass con más frecuencia..

En resumen, LibSass es el puerto C / C ++ del programa Sass original escrito en Ruby. Está destinado a ser envuelto, como hace Node-Sass para usar Sass desde un entorno Node. Objetivo principal: ser increíblemente rápido en comparación con el Sass original.

La diferencia con ruby ​​sass

Bien, entonces sabemos qué es LibSass. Sabemos que LibSass está destinado a ser tan rápido como un robot unicornio arco iris. Bueno. Entonces, ¿por qué no todos usamos LibSass en este momento??

El principal problema con LibSass es que está rezagado con respecto a la implementación original de Ruby cuando se trata de características. En el momento de escribir esto, LibSass 3.1 es totalmente compatible con Sass 3.3, sin embargo, muchas de las funciones de Sass 3.4 aún no están disponibles. LibSass omite, por ejemplo, el uso del selector de referencia (Y) en SassScript (la capacidad de leerlo y actualizarlo sobre la marcha con funciones y demás).

Afortunadamente, los diseñadores del núcleo de Sass han decidido esperar a que LibSass se ponga al día antes de pasar a Sass 3.5, por lo que ambas versiones pronto se sincronizarán. Sin embargo, la versión de Ruby siempre será la versión principal: los parches y las versiones siempre llegarán a Ruby Sass primero, luego se implementarán mediante LibSass..

Cual elegir?

Aquí llega el momento en el que tiene que decidir qué motor Sass desea ejecutar: el Ruby Sass original o el nuevo LibSass. Como con todo en nuestro campo, depende.

En general, probablemente recomendaría LibSass porque generalmente es más rápido que Ruby Sass y la velocidad es todo en este mundo. Sin embargo, si necesita que Sass haga algo loco que requiera nuevas funciones aún que se agreguen a LibSass, Ruby sería la mejor opción.

La mayoría de las veces, encontrará que no es un caso de elegir un compilador Sass para un nuevo proyecto, sino repensar el que ya está usando para que se adapte a su situación. Si trabaja en proyectos de mediana a gran escala, puede experimentar un tiempo de compilación de entre 2 segundos y 30 segundos (sí ...) con Ruby Sass. Podría ser peor con las dependencias lógicas como Compass.

En este punto, se enfermará y se cansará de perder 25 minutos al día a la espera de la compilación de Sass y considerará seriamente abandonar algunas funciones para ganar velocidad. En este caso, LibSass parece una magdalena gigante con forma de gatito, mientras que Ruby Sass es más como una galleta vieja y seca ...

Haciendo el interruptor

Para ayudarlo a decidir si puede o no transferir su base de código completa a LibSass, configuré el proyecto de compatibilidad con Sass. Sass-Compatibility tiene la intención de enumerar todas las principales inconsistencias entre los diferentes motores Sass (básicamente, Ruby Sass 3.2, Sass 3.3, Ruby Sass 3.4 y la última versión de LibSass). Recientemente introduje el proyecto en SitePoint, si desea ponerse al día.

El proyecto Sass-Compatibility.

Nota: Sass-Compatibility usa SassMeister para ejecutar sus pruebas. SassMeister usa Node-Sass para ejecutar LibSass. Sin embargo, Node-Sass todavía no es compatible con LibSass 3.1 (aunque debería serlo pronto), lo que significa que los resultados de Compatibilidad con Sass para LibSass se ven peor de lo que realmente es la situación..

Pensamientos finales

Ahí estamos, amigos. Espero que este artículo te haya ayudado a entender qué y por qué de LibSass..

Actualmente estamos en una situación extraña donde LibSass es extremadamente conveniente gracias a su velocidad, pero no proporciona todo lo que Ruby Sass hace, por lo que aún no se puede adoptar de manera incondicional. Todo esto pronto se resolverá cuando ambas versiones sean totalmente compatibles..

Ahora, ya que LibSass es mucho más rápido que Ruby Sass (y creo que no importa lo difícil que lo hagan los desarrolladores de Ruby Sass, siempre será así), no sé qué tipo de futuro puede haber para la implementación de Ruby. En cierto momento, no creo que tenga mucho sentido usar Ruby Sass si es más lento, a menos que aporte algo extra a la mesa. Como decimos: esperar y ver..