前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云云函数实现小程序代码包分包数及插件等基础信息非侵入式检测

腾讯云云函数实现小程序代码包分包数及插件等基础信息非侵入式检测

作者头像
薛定喵君
发布2021-08-31 17:52:22
2970
发布2021-08-31 17:52:22
举报
文章被收录于专栏:薛定喵君

一个云函数帮你获取小程序包基础信息

# 背景

有时会有同学问如下问题:

  • 某个小程序有多少分包?
  • 用了啥插件?
  • 这个包是主包还是分包?
  • ...

为了方便确认类似问题,做个在线的检测工具吧。

# 实现思路

包文件结构是已知的,见之前发的一篇文章。所以我们只要直接读取分析就好了。需要基于 koa 创建一个云函数,在函数中接收小程序代码包进行分析就可以了。

信息基本都是从配置文件提取,所以我们只要从二进制文件中提取全局配置就行。因为并没有产生任何副作用,不对包本身做任何修改,所以是非侵入式的检测,基本秒出结果无需等待,下面说一下实现功能所需的关键函数。

# 关键函数

  1. 接收表单提交的包文件并以流式读取:
代码语言:javascript
复制
// 获取上传文件
let file = ctx.request.files.file;
let reader = fs.createReadStream(file.path);
  1. 读取信息转 Buffer
代码语言:javascript
复制
// 二进制流转 Buffer 函数
function streamToBuffer(stream) {
  return new Promise((resolve, reject) => {
    let buffers = [];
    stream.on('error', reject);
    stream.on('data', (data) => buffers.push(data));
    stream.on('end', () => resolve(Buffer.concat(buffers)));
  });
}

let buf = await streamToBuffer(reader);
  1. 根据全局配置进行关键信息读取:
代码语言:javascript
复制
let app = JSON.parse(content);
let pageNum = app.pages.length;
let subPackageNum = app.subPackages ? app.subPackages.length : 0;
let subp = 0;
if (app.subPackages) {
  app.subPackages.map((p) => {
    if (p.plugins != undefined) {
      subp++;
    }
  });
}
let appPluginNum = app.plugins ? Object.keys(app.plugins).length : 0;
appPluginNum += subp;
let appPluginId = [];
if (app.plugins) {
  Object.keys(app.plugins).map((ap) => {
    appPluginId.push({
      name: ap,
      id: app.plugins[ap].provider,
    });
  });
}

let analysisInfo = {
  name: app.global.window.navigationBarTitleText,
  pageNum: pageNum,
  subPackageNum: subPackageNum,
  appPluginNum: appPluginNum,
  appPluginIdInfo: appPluginId,
};

目前支持的解析信息为:

字段

说明

name

小程序名称

pageNum

主包页面个数

subPackageNum

分包个数

appPluginNum

插件个数

appPluginIdInfo

插件信息

# 体验地址

Demo 地址 小程序包基础信息检测: http://tcb.xuedingmiao.com/mp

页面比较简陋(🐶)

使用方法:

  • 打开地址后直接拖拽上传即可确认基础信息
  • 使用接口:表单提交(POST)代码包至 http://tcb.xuedingmiao.com/mp/checkpkg

视频演示:

# 参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 背景
  • # 实现思路
  • # 关键函数
  • # 体验地址
  • # 参考资料
相关产品与服务
云函数
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档