如何在命令行为Sprockets注册Terser压缩器并解决未知压缩器报错
问题原因
这个报错是Sprockets命令行工具的参数加载顺序导致的:命令行工具会先解析--js-compressor这类功能参数,完成参数校验后才会加载--require指定的自定义脚本。你在脚本里注册Terser的操作发生在参数校验之后,所以程序处理--js-compressor=terser的时候,Terser还没有被注册到压缩器列表里,就会抛出未知压缩器的错误。
解决方案
你已经在自定义注册脚本里加了Sprockets.js_compressor = :terser这行配置,直接删掉命令行里的--js-compressor=terser参数即可,不需要额外在命令行指定压缩器,脚本里的配置会直接生效。
修改后的命令参考:
sprockets --require ./register_compressor.rb [你的其余参数]
可选验证操作
如果修改后还是不生效,可以做以下检查:
- 确认
ruby-terser包已经正确安装,Debian系统可以直接用apt install ruby-terser安装官方源包,避免gem安装和系统版本冲突 - 可以在你的资源输出目录里随便打个带ES6语法的JS包,检查输出内容是否已经被压缩,确认Terser是否生效
内容的提问来源于stack exchange,提问作者crunchytacogal
相关产品推荐
相关产品推荐

