Skip to content

Commit 3ae8ac4

Browse files
committed
Add support for svgo 2.x and 3.x
1 parent df3fa75 commit 3ae8ac4

1 file changed

Lines changed: 36 additions & 5 deletions

File tree

lib/image_optim/worker/svgo.rb

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
require 'image_optim/option_helpers'
44
require 'image_optim/worker'
5+
require 'fspath'
56

67
class ImageOptim
78
class Worker
@@ -40,15 +41,45 @@ def optimize(src, dst, options = {})
4041
--input #{src}
4142
--output #{dst}
4243
]
43-
disable_plugins.each do |plugin_name|
44-
args.unshift "--disable=#{plugin_name}"
45-
end
46-
enable_plugins.each do |plugin_name|
47-
args.unshift "--enable=#{plugin_name}"
44+
if resolve_bin!(:svgo).version >= '2.0.0'
45+
config_file = plugins_config_file
46+
args.unshift "--config=#{config_file.path}"
47+
else
48+
disable_plugins.each do |plugin_name|
49+
args.unshift "--disable=#{plugin_name}"
50+
end
51+
enable_plugins.each do |plugin_name|
52+
args.unshift "--enable=#{plugin_name}"
53+
end
4854
end
4955
args.unshift "--precision=#{precision}" if allow_lossy
5056
execute(:svgo, args, options) && optimized?(src, dst)
5157
end
58+
59+
private
60+
61+
def plugins_config_file
62+
FSPath.temp_file %w[image_optim .js] do |config_file|
63+
config_file.puts 'export default {'
64+
config_file.puts ' plugins: ['
65+
config_file.puts ' {'
66+
config_file.puts ' name: \'preset-default\','
67+
config_file.puts ' params: {'
68+
config_file.puts ' overrides: {'
69+
disable_plugins.each do |plugin_name|
70+
config_file.puts " #{plugin_name}: false,"
71+
end
72+
enable_plugins.each do |plugin_name|
73+
config_file.puts " #{plugin_name}: true,"
74+
end
75+
config_file.puts ' }'
76+
config_file.puts ' }'
77+
config_file.puts ' }'
78+
config_file.puts ' ]'
79+
config_file.puts '};'
80+
config_file
81+
end
82+
end
5283
end
5384
end
5485
end

0 commit comments

Comments
 (0)