1.1.8 • Published 1 year ago

miniapp-shaking v1.1.8

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

miniapp-shaking 微信小程序摇树优化工具

小马乍行嫌路窄,大鹏展翅恨天低。纸上得来终觉浅,绝知此事要躬行。

要想快乐,就要学会法布施和财布施,所谓法布施就是把自己的人生智慧 无私的分享给有缘人。所以我决定把对小程序的理解写出来,分享给有缘人。

使用demo请看这里:demo

设计文档请看这里:文档

1.如何使用

首先安装npm包

npm i miniapp-shaking -D

然后在项目下新建一个文件,例如:shaking.js

const path = require('path');                             
const { DependContainer } = require('./node_modules/miniapp-shaking');

const options = {
  sourceDir: path.join(__dirname, 'src'),
  targetDir: path.join(__dirname, 'dist'),
  analyseDir: path.join(__dirname, 'analyse'),
  isSplitNpm: true,
  needCustomTabBar: false,
  excludeFiles: ['package-lock.json', 'package.json'],
};

const instance = new DependContainer(options);
instance.init().catch(err => console.error(err));

然后执行node shaking.js,命令完成后会把摇树后的代码输出到dist目录下,直接上传这个目录即可

2.参数Options介绍

  • sourceDir:你的源码目录
  • targetDir: 摇树之后输出的目录,最好定义在你的源码目录之外
  • analyseDir:依赖图的输出目录,摇树优化之后会生成代码的依赖图,类似微信小程序工具那种,不过比他更精细。
  • groupName:项目组名称,对于一个大型公司来说,它的项目公组件、页面可能是有十几个项目组一起开发的,然后在分发成不同的小程序, 这个项目组名称可以去除掉其他组的业务逻辑,从而大大缩小程序体积,提高性能,使用文档:组名的作用
  • needDeleteGroupCode 是否需要删除业务组代码,使用文档:删除业务组代码
  • staticFileExtends:静态文件扩展名,这里面预设了一些,你也可以自己定义。
  • fileExtends:小程序文件扩展名,一般不用传。
  • excludeFiles:需要排除遍历的的一些文件目录,仅限于在一级目录下的文件。
  • isSplitNpm: 是否需要独立分包,这个是更高级的摇树优化,使用文档:移动独立npm包
  • excludeNpms:独立分包需要排除的npm包名称,用于解决一些特殊的情况。
  • needCustomTabBar:是否使用了微信的自定义tabbar,如果使用了必须设置为true,否则不会遍历。

3. 注意事项

  • 分包的目录最好在一级目录之下,参考官网分包
  • 如果源码目录下包括了一些脚本文件,如上面的shaking.js,可以加入excludeFiles排除

changelog:

  • bugfix:修复删除业务代码正则匹配越界问题
  • bugfix:修复异步文件没有递归遍历问题
  • bugifx:修复window环境子包正则校验错误问题
  • 增加删除业务代码功能