In the interactive command line, select the corresponding folder to compress all pictures and sub-pictures in the picture folder

// http://tinify.com
const tinify = require('tinify')
// https://www.npmjs.com/package/inquirer
const inquirer = require('inquirer')
const fs = require('fs')
const path = require('path')
const chalk = require('chalk')
// const md5File = require('md5-file')

tinify.key = "YOUR_API_KEY"
// console.log(chalk`{hex('#06f') 

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`)
  // let db = JSON.parse(fs.readFileSync(__dirname + '/db.json', 'utf8'))
  deepGetDirectories(PAGE_ROOT_PATH + dir + '/img/')
  imgFilePathArr.forEach(file= > {
    // const hash = md5File.sync(file)
    // if (hash ! == db[file]) {
      const source = tinify.fromFile(file)
      source.toFile(file).then(() = > {
        // db[file] = md5File.sync(file)
        // fs.writeFileSync(__dirname + '/db.json', JSON.stringify(db))
        console.log(chalk'{hex('#09f') compression completes:${file}} `)})// } else {
      / / the console. The log (chalk ` {hex (' # 0 f9) files without compression: ${file}} `)
    // }})})// Compress: "node./xx/compressor.
// NPM run compress
Copy the code