Eu quero usar Engrenagens na linha de comando (com o ruby-engrenagens pacote Debian), e eu quero usar Suscinto como o JavaScript compressor (porque Uglify não suporta ES6). Toda a documentação que eu vi sugere que eu posso criar um arquivo com o código a seguir:
require 'sprockets'
require 'terser'
Sprockets.register_compressor 'application/javascript', :terser, Terser::Compressor
para registrar Suscinto com rodas Dentadas e, em seguida, eu aderência em --require FILE
a minha chamada para sprockets
na linha de comando. Eu sei que é o processamento do script, porque eu posso adicionar algo como isso para o arquivo:
Sprockets.js_compressor = :terser
puts Sprockets.js_compressor
e imprime Terser::Compressor
como se poderia esperar.
No ENTANTO. Quando eu executo engrenagens com algo semelhante a isto:
sprockets --require ./register_compressor.rb --js-compressor=terser ...
Recebo a resposta:
/usr/lib/ruby/vendor_ruby/sprockets/compressing.rb:63:in `js_compressor=':
unknown compressor: terser (Sprockets::Error)
Eu estive batendo a minha cabeça contra esse problema por muito tempo.