Как зарегистрировать компрессор со звездочками в командной строке?

0

Вопрос

Я хочу использовать звездочки в командной строке (с пакетом Debian ruby-звездочки), и я хочу использовать Terser в качестве компрессора JavaScript (потому что Uglify не поддерживает ES6). Вся документация, которую я видел, предполагает, что я могу создать файл со следующим кодом:

require 'sprockets'
require 'terser'

Sprockets.register_compressor 'application/javascript', :terser, Terser::Compressor

чтобы зарегистрировать Terser с помощью звездочек, а затем я прикрепляю --require FILE на мой призыв к sprockets в командной строке. Я знаю, что он обрабатывает сценарий, потому что я могу добавить что-то подобное в файл:

Sprockets.js_compressor = :terser
puts Sprockets.js_compressor

и он печатает Terser::Compressor как и следовало ожидать.

однако. Когда я запускаю звездочки с чем-то подобным:

sprockets  --require ./register_compressor.rb  --js-compressor=terser ...

Я получаю ответ:

/usr/lib/ruby/vendor_ruby/sprockets/compressing.rb:63:in `js_compressor=': 
unknown compressor: terser (Sprockets::Error)

Я слишком долго бился головой об эту проблему.

debian ruby sprockets terser
2021-11-22 21:39:12
1

Лучший ответ

0

Итак, для следующего человека, который столкнется с этой (по-видимому, очень редкой) проблемой, вам нужно исправить Sprockets::Environment.js_compressor=:

module Sprockets
  class Environment < Base
    def js_compressor=(compressor)
      register_compressor 'application/javascript', :terser, Terser::Compressor
      super
    end
  end
end
2021-11-23 18:54:16

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................