¿Cómo registro un compresor con ruedas dentadas en la línea de comandos?
Quiero utilizar Sprockets en la línea de comandos (con el paquete Ruby-sprockets de Debian) y quiero utilizar Terser como compresor de JavaScript (porque Uglify no es compatible con ES6). Toda la documentación que he visto sugiere que puedo crear un archivo con el siguiente código:
require 'sprockets'
require 'terser'
Sprockets.register_compressor 'application/javascript', :terser, Terser::Compressor
para registrar Terser con Sprockets, y luego agrego un --require ARCHIVO
a mi llamada a sprockets
en la línea de comandos. Sé que está procesando el script, porque puedo agregar algo como esto al archivo:
Sprockets.js_compressor = :terser
puts Sprockets.js_compressor
y muestra Terser::Compressor
como era de esperar.
SIN EMBARGO. Cuando ejecuto sprockets con algo similar a esto:
sprockets --require ./register_compressor.rb --js-compressor=terser ...
Obtengo la respuesta:
/usr/lib/ruby/vendor_ruby/sprockets/compressing.rb:63:in `js_compressor=':
unknown compressor: terser (Sprockets::Error)
Llevo mucho tiempo intentando resolver este problema.
davy.ai
Para usar Sprockets en la línea de comando con Terser como compresor de JavaScript, puedes seguir estos pasos:
register_compressor.rb
con el siguiente contenido:sprockets
con la opción--require
para cargar el archivoregister_compressor.rb
:terser
con la opción--js-compressor
:Sin embargo, si aún recibes el error “
unknown compressor: terser
“, puede que necesites verificar si la gema Terser está instalada e intentar requerirla explícitamente en el archivoregister_compressor.rb
:Espero que esto te ayude a solucionar el problema que has estado enfrentando.