通过自定义命令在上传前压缩wxml文件,压缩小程序包大小的方法
发布于 3 年前 作者 yang04 2352 次浏览 来自 分享

最近在研究小程序/插件包的压缩,发现wxml文件的压缩能够显著减少最终打包的体积(是不是因为打包过程没有对wxml文件进行压缩?不清楚)

wxml文件中充斥着大量空格,换行符等等,把这些字符去掉就能够显著减少文件体积

所以要做的事情分三步:

1.把所有wxml文件中每行开头的多个空格换成单个空格

2.把所有wxml文件中的换行符(\n)删掉

3.把所有wxml文件中的多余空格去掉(> <替换成><)

把上述三个步骤整合成一个命令如下:

find . -type f -name “*.wxml” -print0 | xargs -0 perl -pi -e  “s/^\s*/ /g”;find . -type f -name “*.wxml” -print0 | xargs -0 perl -pi -e  “s/\n//g”;find . -type f -name “*.wxml” -print0 | xargs -0 perl -pi -e  “s/> </></g”

具体位置见下图

然后把这个命令粘贴到小程序开发工具里-详情-本地设置-启用自定义处理命令0上传前预处理

这样每次上传代码前就会自动进行压缩。

由于压缩对象是你的源文件,而不是把所有代码拷贝到一个新目录再进行压缩,所以如果你上传完,需要运行一下git reset --hard把代码恢复回去

根据我的测试,在我们项目中,原来的包大小是574KB,经过这样处理之后,包大小变成了516KB,包大小缩减到了原来的90%。具体可以看下图,上次预览(压缩后的代码)是516KB,上次上传(压缩前的代码)是574KB

这个方法是无损代码的,不会改变任何代码逻辑,只是简单地去除掉了多余的空格和换行符。

最后需要注意的是:

1.由于搜索替换代码不够智能,无法分辨是代码还是页面文字,有可能会把你的带换行符的文字信息,给替换成一行

2.有可能把你页面文字中的> <换成><

这两个问题需要手动处理一下,但我相信应该碰到的也不会太多吧。

最最后呼吁一下,希望微信官方能够把wxml的压缩集成到开发工具里,或者至少在自定义处理命令后增加一个『上传后处理』的选项,这样我就能再写个命令把代码还原了。

1 回复

太麻烦了,也就减少10%

回到顶部