杨二

Machine repeats, Human creates

清理项目根目录的各种图标

曾几何时,只需要一个favicon.ico就可以满足网站的图标需求,随着移动端开发的繁荣,一个小小的图标也需要适配各种设备,虽然从牌子上区分主要就是苹果和安卓,但是一考虑到屏幕分辨率,真特么头大:

  • android-chrome-144×144.png
  • android-chrome-192×192.png
  • android-chrome-36×36.png
  • android-chrome-48×48.png
  • android-chrome-72×72.png
  • android-chrome-96×96.png
  • apple-touch-icon-114×114.png
  • apple-touch-icon-120×120.png
  • apple-touch-icon-144×144.png
  • apple-touch-icon-152×152.png
  • apple-touch-icon-180×180.png
  • apple-touch-icon-57×57.png
  • apple-touch-icon-60×60.png
  • apple-touch-icon-72×72.png
  • apple-touch-icon-76×76.png
  • apple-touch-icon.png
  • apple-touch-icon-precomposed.png
  • browserconfig.xml
  • favicon-16×16.png
  • favicon-194×194.png
  • favicon-32×32.png
  • favicon-96×96.png
  • favicon.ico
  • manifest.json
  • mstile-144×144.png
  • mstile-150×150.png
  • mstile-310×150.png
  • mstile-310×310.png
  • mstile-70×70.png
  • safari-pinned-tab.svg

像这种生成各种图标的活儿,挺适合让机器来干:只需要给出一个最大分辨率的图,机器便能返回一个包含各种图标的资源包。我们只需要把这些图放到特定某一位置然后配置下nginx,万事大吉。根据这个想法,试着Google了一下,果然有个利器,而且是在线免费生成:Favicon Generator. For real.

通过Favicon Generator生成的图标资源,不建议放在项目根目录,而是集中放到某处,比如:/assets/favicons/,方便管理,通过配置nginx达到同样效果:

location ~ ^/(android-chrome|apple-touch-icon|browserconfig|favicon|manifest|mstile|safari-pinned-tab)(.*)\.(.*)$ {
  root /var/www/example.com/assets/favicons;
}

这样,我的目的达到了:既能一键生成各种繁琐的图标,又清理了项目根目录,可谓一箭双雕。人生苦短,重复性的活儿交给机器,我们负责创造和下达指令。