Comment puis-je enregistrer un compresseur avec pignons sur la ligne de commande?

0

La question

Je veux utiliser les Pignons à la ligne de commande (avec l'ruby-pignons paquet Debian), et je veux utiliser Terser que le JavaScript compresseur (parce que Uglify ne prend pas en charge ES6). Toute la documentation que j'ai vu suggère que je peux créer un fichier avec le code suivant:

require 'sprockets'
require 'terser'

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

pour vous inscrire Terser avec les Pignons, puis je virer de bord sur les --require FILE à mon appel à sprockets sur la ligne de commande. Je sais que c'est le traitement du script, parce que je peux ajouter quelque chose comme ceci dans le fichier:

Sprockets.js_compressor = :terser
puts Sprockets.js_compressor

et il imprime Terser::Compressor comme on pourrait s'y attendre.

CEPENDANT. Quand je lance pignons avec quelque chose de similaire à ceci:

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

Je reçois la réponse:

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

J'ai été frapper ma tête contre ce problème depuis trop longtemps.

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

La meilleure réponse

0

Ok, donc pour la prochaine personne qui s'exécute dans ce (apparemment très rare) problème, vous avez besoin de patch 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

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................