返回
使用Ruby快速搜索项目中的无用图片
IOS
2023-12-02 15:13:29
在软件开发过程中,管理图片资源是一件令人头疼的事情。随着项目不断发展,图片资源也会不断增加,其中不乏一些被遗弃的无用图片。这些无用图片不仅会占用项目空间,还会影响编译速度。
针对这一痛点,本文将介绍如何使用Ruby编写一个脚本,快速搜索项目中的无用图片。该脚本基于以下原理:查找项目中存放图片资源的文件夹,获取图片的名字,然后遍历项目,查找是否存在引用这些图片的文件。
步骤
1. 查找图片资源文件夹
assets_path = File.join(project_path, "*.xcassets")
2. 获取图片名称
image_names = Dir.glob(File.join(assets_path, "**/*.png"))
3. 遍历项目查找引用
used_image_names = []
Dir.glob("**/*.{h,m,swift}").each do |file|
used_image_names += file.scan(/UIImage imageNamed: @"(.*?)"/).flatten
end
4. 找出无用图片
unused_image_names = image_names - used_image_names
代码实现
require "fileutils"
def find_unused_images(project_path)
assets_path = File.join(project_path, "*.xcassets")
image_names = Dir.glob(File.join(assets_path, "**/*.png"))
used_image_names = []
Dir.glob("**/*.{h,m,swift}").each do |file|
used_image_names += file.scan(/UIImage imageNamed: @"(.*?)"/).flatten
end
unused_image_names = image_names - used_image_names
unused_image_names.each do |image_name|
image_path = File.join(assets_path, image_name)
FileUtils.rm(image_path)
end
puts "已移除 #{unused_image_names.count} 张无用图片。"
end
使用
将代码复制到一个Ruby脚本中,并传入项目路径作为参数:
ruby find_unused_images.rb ~/Projects/MyProject
脚本将自动查找并删除未被使用的图片。