交互时命令行,选择对应文件夹压缩图片文件夹中所有图片极其子图片
const tinify = require('tinify')
const inquirer = require('inquirer')
const fs = require('fs')
const path = require('path')
const chalk = require('chalk')
tinify.key = "YOUR_API_KEY"
const questions = [
{
type: 'list',
name: 'homeDirectory',
message: 'Please select the home directory to be compressed',
choices: ['A', 'B'],
default: 'A',
},
{
type: 'list',
name: 'dir',
message: 'Please select the page to be compressed',
choices: function(answers) {
const { homeDirectory } = answers
PAGE_ROOT_PATH = homeDirectory === 'A' ? './src/aDirectory/' : './src/bDirectory/'
dirs = fs.readdirSync(PAGE_ROOT_PATH)
dirs.sort((a, b) => {
return fs.statSync(PAGE_ROOT_PATH + b).mtime.getTime() -
fs.statSync(PAGE_ROOT_PATH + a).mtime.getTime()
})
return dirs
},
}
]
let PAGE_ROOT_PATH = './src/pages/'
let dirs = null
const imgFilePathArr = []
function deepGetDirectories(distPath) {
const dirArr = fs.readdirSync(distPath)
dirArr.forEach(file => {
if (fs.statSync(distPath + file).isDirectory()) {
deepGetDirectories(distPath + file+'/')
} else {
if (file.match(/(\.png|\.jpg|\.jpeg)$/)) {
imgFilePathArr.push(path.resolve(distPath + file))
}
}
})
}
inquirer.prompt(questions).then(({ dir }) => {
console.log(chalk`\r\n{hex('#090') 开始压缩:${PAGE_ROOT_PATH + dir }/img}\r\n`)
deepGetDirectories(PAGE_ROOT_PATH + dir + '/img/')
imgFilePathArr.forEach(file => {
const source = tinify.fromFile(file)
source.toFile(file).then(() => {
console.log(chalk`{hex('#09f') 压缩完成:${file}}`)
})
})
})