Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • 技术文档

  • GitHub

  • Nodejs

    • 打造属于自己的项目脚手架工具
    • node 和 npm 常见问题
    • node 和 npm 简介
    • 手搓一个 TinyPng 压缩图片的脚手架
      • 问题
      • 实现
      • 安装
      • 使用
      • 存在的问题
        • 保留源文件压缩后路径会合并
    • node 监听文件夹并处理
    • 相对路径转别名路径之 chokidar
    • 脚手架性能分析
    • 自动化打包微前端多个项目
  • Chrome

  • VSCode

  • VSCode 更新文档

  • AIGC

  • Other

  • 技术
  • Nodejs
Henry
2020-10-06
目录
问题
实现
安装
使用
存在的问题
保留源文件压缩后路径会合并

手搓一个 TinyPng 压缩图片的脚手架

最近做项目的时候,UI 妹子遇到需要使用 TinyJpg/TinyPng 压缩大量图片的需求,但使用 TinyJpg/TinyPng 有一些问题:

# 问题

  1. 上传下载全靠手动
  2. 每次只能压缩 20 张

压缩一两张还可以接受,但一次要压缩上百张,就需要操作上传下载至少 5 次,而且上传需要记住上次选择的位置,下载后还是压缩包,还需要解压,再删除压缩包,

人生大部分时间就被这些重复且毫无技术含量的事情消耗完了

那咱作为程序员,不就是解决这些重复且无技术含量的事情吗?

好,说干就干!

# 实现

正好记得以前看过一个大佬封装过的 webpack 插件:JowayYoung/tinyimg-webpack-plugin: A webpack plugin for compressing image (opens new window), 封装思路:嗯,手搓一个 TinyPng 压缩图片的 WebpackPlugin 也 SoEasy 啦 (opens new window)

但由于咱对 webpack 不太熟悉,而最近刚写了一个脚手架:打造属于自己的项目脚手架工具, 所以就想改造成一个压缩图片的脚手架

基本思路:

  1. 在需要压缩图片的文件夹中执行压缩命令
  2. 获取该文件夹下所有图片文件 (支持递归查找)
  3. 依次上传压缩图片并下载
  4. 输出信息

源码 (opens new window) 在这里

# 安装

npm i tiny-photo-cli -g

# 使用

在需要压缩图片的文件夹下执行  tiny t  即可,默认覆盖源文件; 如需要保留源文件,请传入路径,如: tiny t path

# 存在的问题

# 保留源文件压缩后路径会合并

保留源文件时,如果有文件夹嵌套,压缩后统一都放到压缩后的路径了,无法保留源路径,同名文件只保留一份

如压缩以下路径中的图片:

│image/
├─ 1.png
├─ test/
│  ├─ 1.png
│  └─ 2.png
1
2
3
4
5

在 image 文件夹下执行压缩命令:tiny t tiny-image 后路径为:

│image/
├─ tiny-image/
│  ├─ 1.png
│  └─ 2.png
├─ 1.png
├─ test/
│  ├─ 1.png
│  └─ 2.png
1
2
3
4
5
6
7
8
编辑 (opens new window)
#node#cli#Vue
上次更新: 9/15/2024, 11:00:05 AM
node 和 npm 简介
node 监听文件夹并处理

← node 和 npm 简介 node 监听文件夹并处理→

最近更新
01
搭配 Jenkins 实现自动化打包微前端多个项目
09-15
02
自动化打包微前端多个项目
09-15
03
el-upload 直传阿里 oss 并且显示自带进度条和视频回显封面图
06-05
更多文章>
2 comments
Anonymous
Markdown is supported
@Torres7707
Torres7707commentedover 3 years ago

可以洗稿吗

@HenryTSZ
HenryTSZcommentedover 3 years ago

@Torres7707
可以洗稿吗

不行, 转载请注明出处

Theme by Vdoing | Copyright © 2017-2025 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式