1.0.1 • Published 13 days ago

miniprogram-mp-ci v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
13 days ago

概述

mp-ci 是一个 npm 包,旨在简化小程序的成员管理流程。它允许开发者直接通过代码,而不是手动通过微信公众平台,来执行批量管理任务。这个工具包提供了一系列自动化功能,使得管理小程序成员变得快捷高效。

密钥及 IP 白名单配置

使用 mp-ci 前应访问"微信公众平台-开发-开发设置"后下载代码上传密钥,并配置 IP 白名单 开发者可选择打开 IP 白名单,打开后只有白名单中的 IP 才能调用相关接口。我们建议所有开发者默认开启这个选项,降低风险 代码上传密钥拥有预览、上传代码的权限,密钥不会明文存储在微信公众平台上,一旦遗失必须重置,请开发者妥善保管

功能

mp-ci 目前提供以下能力: 1. 批量成员管理

脚本调用

npm install mp-ci --save

项目对象

项目对象是本模块主要的入参,可以依据下边的定义自行实现

项目对象的定义:

interface IProject {
  appid: string
  type: string
  projectPath: string
  privateKey: string
  attr(): Promise<IProjectAttr>
  stat(prefix: string, filePath: string): IStat | undefined
  getFile(prefix: string, filePath: string): Promise<Buffer>
  getFileList(prefix: string, extName: string): string[]
  updateFiles: () => void
}
类型说明
appid属性小程序/小游戏项目的 appid
type属性项目的类型,有效值 miniProgram/miniProgramPlugin/miniGame/miniGamePlugin
projectPath属性项目的路径,即 project.config.json 所在的目录
privateKey属性私钥,在获取项目属性和上传时用于鉴权使用,在 微信公众平台 上登录后下载
attr异步方法项目的属性,如指定了 privateKey 则会使用真实的项目属性
stat同步方法特定目录下前缀下(prefix)文件路径 (filePath) 的 stat, 如果不存在则返回 undefined
getFile异步方法特定目录下前缀下(prefix)文件路径 (filePath) 的 Buffer
getFileList同步方法特定目录下前缀下(prefix)文件路径 (filePath) 下的文件列表
updateFile同步方法更新项目文件

也可以通过指定项目路径来创建该对象

const ci = require('miniprogram-ci')
// 注意: new ci.Project 调用时,请确保项目代码已经是完整的,避免编译过程出现找不到文件的报错。
const project = new ci.Project({
  appid: 'wxsomeappid',
  type: 'miniProgram',
  projectPath: 'the/project/path',
  privateKeyPath: 'the/privatekey/path',
  ignores: ['node_modules/**/*'],
})
类型必填说明
appidstring合法的小程序/小游戏 appid
projectPathstring项目路径
privateKeyPathstring私钥的路径
typestring显示指明当前的项目类型, 默认为 miniProgram,有效值 miniProgram/miniProgramPlugin/miniGame/miniGamePlugin
ignoresstring[]指定需要排除的规则

批量成员管理

const ci = require('mp-ci')
;(async () => {
  const project = new ci.Project({
    appid: 'wxsomeappid',
    type: 'miniProgram',
    projectPath: 'the/project/path',
    privateKeyPath: 'the/path/to/privatekey',
    ignores: ['node_modules/**/*'],
  })
  const result = await ci.manageProjectMember({
    project,
    action: "add_project_member_data",
    robot: 1,
    member_list: [
      {   
         wechatid: "wechatid1",
         remark: "remark1"
      }
      { 
         wechatid: "wechatid2",
         remark: "remark2"
      }
    ]
  })
  console.log(result)
})()

参数

类型必填说明
projectIProject#项目对象
actionstring#成员管理action
robotnumber指定使用哪一个 ci 机器人,可选值:1 ~ 30
member_listarray#成员对象数组

成员管理action

可选值说明
add_experiencer批量添加体验成员查看体验版权限
delete_experiencer批量删除体验成员查看体验版权限
add_experiencer_dev批量添加体验成员查看开发版权限
delete_experiencer_dev批量删除体验成员查看开发版权限
add_project_member_operator批量添加项目成员运营者权限
delete_project_member_operator批量删除项目成员运营者权限
add_project_member_developer批量添加项目成员开发者权限
delete_project_member_developer批量删除项目成员开发者权限
add_project_member_data批量添加项目成员数据分析者权限
delete_project_member_data批量删除项目成员数据分析者权限

成员对象

类型必填说明
wechatidstring目标用户的微信号
remarkstring备注

返回

类型必填说明
errCodenumber0为成功,-1为失败
errMsgnumber80601为新增的成员已存在,80602为删除的成员不存在