Skip to content

Commit 68b5e32

Browse files
committed
Add support for svgo 2.x and 3.x
1 parent 6e29bab commit 68b5e32

1 file changed

Lines changed: 35 additions & 5 deletions

File tree

lib/image_optim/worker/svgo.rb

Lines changed: 35 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
@@ -42,11 +43,18 @@ def optimize(src, dst, options = {})
4243
--input #{src}
4344
--output #{dst}
4445
]
45-
disable_plugins.each do |plugin_name|
46-
args.unshift "--disable=#{plugin_name}"
47-
end
48-
enable_plugins.each do |plugin_name|
49-
args.unshift "--enable=#{plugin_name}"
46+
if resolve_bin!(:svgo).version >= '2.0.0'
47+
unless disable_plugins.empty? && enable_plugins.empty?
48+
config_file = plugins_config_file
49+
args.unshift "--config=#{config_file.path}"
50+
end
51+
else
52+
disable_plugins.each do |plugin_name|
53+
args.unshift "--disable=#{plugin_name}"
54+
end
55+
enable_plugins.each do |plugin_name|
56+
args.unshift "--enable=#{plugin_name}"
57+
end
5058
end
5159
args.unshift "--precision=#{precision}" if allow_lossy
5260
execute(:svgo, args, options) && optimized?(src, dst)
@@ -63,6 +71,28 @@ def parse_plugin_names(v)
6371
end
6472
end
6573
end
74+
75+
def plugins_config_file
76+
@plugins_config_file ||= FSPath.temp_file(%w[image_optim .js]).tap do |config_file|
77+
config_file.puts 'export default {'
78+
config_file.puts ' plugins: ['
79+
config_file.puts ' {'
80+
config_file.puts ' name: \'preset-default\','
81+
config_file.puts ' params: {'
82+
config_file.puts ' overrides: {'
83+
disable_plugins.each do |plugin_name|
84+
config_file.puts " #{plugin_name}: false,"
85+
end
86+
config_file.puts ' }'
87+
config_file.puts ' }'
88+
config_file.puts ' },'
89+
enable_plugins.each do |plugin_name|
90+
config_file.puts " '#{plugin_name}',"
91+
end
92+
config_file.puts ' ]'
93+
config_file.puts '};'
94+
end
95+
end
6696
end
6797
end
6898
end

0 commit comments

Comments
 (0)