说明
@tols/gm-base
是@tols gm所有工具的基础类。它提供了一套批处理的解决方案。具有数据定义、生命周期钩子等能力。
安装
npm i -S @tols/gm-base
使用示例
const gmBase = require('@tols/gm-base')
gmBase({
data () {
return {
directory: 'dist',
threads: 5,
qualityVal: 60,
progressInfo: ['压缩进度', '正在压缩']
}
},
beforeCollectInfo ({threads, qualityVal}) {
return [
{
type: 'input',
message: '请输入要同时压缩的文件数量:',
name: 'threads',
default: threads
},
{
type: 'input',
message: '请输入压缩后的图片质量:',
name: 'qualityVal',
default: qualityVal
},
{
type: 'input',
message: '请输入要压缩的图片源文件目录:',
name: 'srcPath',
default: ''
},
{
type: 'input',
message: '请输入压缩之后图片将要存放的目录:',
name: 'distPath',
default: ''
}
]
},
beforeStart ({data, answers, fromCode}) {
if (fromCode) {
return
}
data.threads = Number(answers.threads)
data.qualityVal = Number(answers.qualityVal)
if (!answers.threads || typeof data.threads !== 'number' || data.threads !== data.threads) {
throw '请输入要同时压缩的文件数量'
}
if (!answers.qualityVal || typeof data.qualityVal !== 'number' || data.qualityVal !== data.qualityVal) {
throw '请输入压缩后的图片质量'
}
if (!answers.srcPath) {
throw '请输入要压缩的图片源文件目录'
}
if (!answers.distPath) {
throw '请输入压缩之后图片将要存放的目录'
}
},
batching ({data, srcFile, distFile, gm, warnings, next}) {
gm(srcFile)
.quality(data.qualityVal)
.write(distFile, function (err) {
if (err) {
console.log(err)
return
}
next()
})
},
afterBatch ({distPath, chalk, warnings}) {
console.log(`您的图片已经压缩完毕。\n存放在: ${distPath}`)
if (warnings.length) {
console.log(chalk.yellow(`温馨提示:检测到有以下些图片被拉扯,可能会导致模糊!\n${warnings.join('\n')}`))
}
}
})