filesbox/miniprogram/FilesBox/node_modules/mp-html/tools/minifier.js
2023-09-21 10:23:31 +08:00

41 lines
867 B
JavaScript

const uglify = require('uglify-js')
const through2 = require('through2')
/**
* @description 压缩内联 wxs 脚本
*/
function wxs () {
return through2.obj(function (file, _, callback) {
if (file.isBuffer()) {
file.contents = Buffer.from(file.contents.toString().replace(/<wxs(.*?)>([\s\S]+?)<\/wxs>/, (_, $1, $2) => {
return `<wxs${$1}>${uglify.minify($2, {
fromString: true,
mangle: {
toplevel: true
}
}).code}</wxs>`
}))
}
this.push(file)
callback()
})
}
/**
* @description 压缩 json 文件
*/
function json () {
return through2.obj(function (file, _, callback) {
if (file.isBuffer()) {
file.contents = Buffer.from(JSON.stringify(JSON.parse(file.contents.toString())))
}
this.push(file)
callback()
})
}
module.exports = {
wxs,
json
}