如何在命令行上注册带链轮的压缩机?

问题描述 投票:0回答:2

我想在命令行使用 Sprockets(使用 ruby-sprockets Debian 软件包),并且我想使用 Terser 作为 JavaScript 压缩器(因为 Uglify 不支持 ES6)。我见过的所有文档都表明我可以使用以下代码创建一个文件:

require 'sprockets'
require 'terser'

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

向 Sprockets 注册 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)

我已经为这个问题苦苦挣扎太久了。

ruby debian sprockets terser
2个回答
2
投票

好的,所以对于下一个遇到这个(显然非常罕见)问题的人,你需要修补

Sprockets::Environment.js_compressor=

module Sprockets
  class Environment < Base
    def js_compressor=(compressor)
      register_compressor 'application/javascript', :terser, Terser::Compressor
      super
    end
  end
end

0
投票

在环境/生产.rb

require "terser"

Sprockets.register_compressor("application/javascript", :terser, Terser::Compressor)
config.assets.js_compressor = :terser
© www.soinside.com 2019 - 2024. All rights reserved.