UNPKG

easy-tinypng-new-cli

Version:

A cli can be used to compress images with tinypng.com

46 lines (45 loc) 1.47 kB
import crypto from 'node:crypto'; import fs from 'node:fs'; import path from 'node:path'; import chalk from 'chalk'; export const isBoolean = (arg) => { return typeof arg === 'boolean'; }; export const isNotFalse = (arg) => { return !(isBoolean(arg) && !arg); }; export const isImageExp = (fileName) => /\.(png|jpeg|gif|jpg|bmp|svg|webp)$/i.test(fileName); // eslint-disable-next-line no-console const log = console.log; export function debug(...args) { log(chalk.green('[fast-imagemin-cli]'), ...args); } export function walkSync(currentDirPath, callback) { fs.readdirSync(currentDirPath, { withFileTypes: true }).forEach((dirent) => { const filePath = path.join(currentDirPath, dirent.name); if (dirent.isFile()) callback(filePath, dirent); else if (dirent.isDirectory()) walkSync(filePath, callback); }); } /** * 获得内容的hash值 * * @param {String} content 文件内容 * @param {String} encoding 文件的编码,例如:'utf8' 等 * @param {String} type hash算法,例如:'md5'、'sha1'、'sha256'、'sha512' 等 * @returns {String} */ export function getHash(content, encoding, type) { return crypto.createHash(type).update(content, encoding).digest('hex'); } /** * 获得文件的hash值 * * @param {String} filePath 文件路径 * @returns {String} */ export function getHashOfFile(filePath) { return getHash(fs.readFileSync(filePath, 'utf8'), 'utf8', 'md5'); }