最近在研究小程序/插件包的压缩,发现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的压缩集成到开发工具里,或者至少在自定义处理命令后增加一个『上传后处理』的选项,这样我就能再写个命令把代码还原了。