Skip to content

A Node.js module for optimizing image file size. It can be used independently or configured to detect image files in git areas, providing the ability to compress and optimize them at code commit time.

License

Zen33/minify-pix

Repository files navigation

📸 MinifyPix

MinifyPix 是一个用于优化图像文件大小的 Node.js 模块。它既可以独立使用,也可以通过配置检测 Git 暂存区中的图像文件,在代码提交的时候提供对它们进行压缩和优化的能力。

可配置的基于Git批量压缩图片

📥 安装

使用 npm 安装:

npm install minify-pix

🚀 使用

独立使用

您可以直接运行 minify-pix 命令来优化当前目录下的所有图像文件。

npx minify

与 Git 钩子集成

MinifyPix 可以与 Git 钩子集成,在每次代码提交时自动优化暂存区中的图像文件。

  1. 安装 Husky 9
npm install husky@9 --save-dev
  1. 初始化 Husky
npx husky init
  1. 配置 pre-commit 钩子

Husky 会在 .husky 目录下创建 pre-commit 文件。编辑该文件,添加以下内容:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx minify

这将在每次提交代码时先执行 minify-pix 命令,然后将优化后的文件添加到暂存区。

  1. 安装当前支持的最低版本husky,如5
npm install husky@5 --save-dev
npx husky install
npx husky add .husky/pre-commit "npx minify"
  1. 编辑.husky/pre-commit
#!/bin/sh

npx minify

git diff --cached --name-only --diff-filter=ACMRTUXB | egrep "\.(png|gif|jpeg|jpg|svg)$" | while IFS= read -r file;do
  git add "$file"
done
  1. 当前可基于package.json配置
"minifyPix": {
  "png": {
    "quality": [0.6, 0.8]
  }
}
const DEFAULT_PLUGIN_CONFIG = {
  jpg: { quality: 90, progressive: true, arithmetic: false },
  png: { quality: [0.8, 0.9], speed: 1 },
  gif: { optimizationLevel: 2, interlaced: false, colors: 256 }
}

现在,每次提交代码时,MinifyPix 都会自动优化暂存区中的图像文件。

⚙️ 配置

MinifyPix 支持多种优化选项,您可以在运行时传递参数或在项目根目录下创建 minifyPix.config.js 文件进行配置。

minifyPix.config.js 中,您可以配置以下选项:

  • destination (字符串):指定要优化的图像文件所在的本地目录相对路径。(当设置此项后将不会再从Git的状态中提取图片)
  • exclude (数组):指定要排除的目录或文件,通常用于排除 node_modules(默认) 目录。
  • target (字符串):指定优化后的图像文件输出目录相对路径。如果未指定,则会覆盖原始文件。
  • 其他插件选项,例如 jpgpnggif 等,用于自定义各种图像格式的优化参数。

例如:

module.exports = {
  destination: './src',
  exclude: ['node_modules', '.hidden'],
  target: './static',
  png: {
    quality: [0.6, 0.8]
  }
}

更多详细信息,请参阅 代码私仓,或者Github

📄 许可证

MinifyPix 基于 MIT 许可证开源。

About

A Node.js module for optimizing image file size. It can be used independently or configured to detect image files in git areas, providing the ability to compress and optimize them at code commit time.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published