• miniprogram-ci 使用说明


    miniprogram-ci 使用说明

    miniprogram-ci 是从微信开发者工具中抽离的关于小程序/小游戏项目代码的编译模块。

    使用miniprogram-ci可以使得开发者不需要通过微信开发者工具进行小程序的上传与预览。

    miniprogram-ci 提供了以下的能力

      1. 上传代码,对应小程序开发者工具的上传
      1. 预览代码,对应小程序开发者工具的预览
      1. 构建 npm,对应小程序开发者工具的: 菜单 - 工具 - 构建npm
      1. 上传云开发云函数代码,对应小程序开发者工具的上传云函数能力
      1. 上传云托管代码,对应小程序开发者工具的上传云托管能力
      1. 上传云存储/静态托管文件,对应小程序 开发者工具 - 云开发 - 云存储 和静态托管文件管理
      1. 代理,配置 miniprogram-ci 的网络请求代理方式
      1. 支持获取最近上传版本的 sourceMap
      1. 支持 node 脚本调用方式和 命令行 调用方式

    安装

    先安装miniprogram-ci:

    npm i miniprogram-ci -D
    
    • 1

    创建项目对象

    创建项目对象是miniprogram-ci模块实现各种功能的基础。

    const ci = require("miniprogram-ci");
    const project = new ci.Project({
      appid: "wxsomeappid",
      type: "miniProgram",
      projectPath: "the/project/path",
      privateKeyPath: "the/privatekey/path",
      ignores: ["node_modules/**/*"],
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注意: new ci.Project调用时,需要确保项目代码已经是完整的,避免编译过程出现找不到文件的报错。

    接受参数如下:

    类型是否必填说明
    appidstring合法的小程序/小游戏 appid
    projectPathstring项目路径,即 project.config.json 所在的目录
    privateKeyPathstring密钥的路径,在获取项目属性和上传时用于鉴权使用,在微信公众平台上登录后下载
    typestring显示指明当前的项目类型, 默认为 miniProgram,有效值 miniProgram/miniProgramPlugin/miniGame/miniGamePlugin
    ignoresstring[]指定需要排除文件的规则

    上传

    在配置好对象后,就可以进行项目代码的上传了。

    const ci = require("miniprogram-ci");
    const path = require("path");
    const project = new ci.Project({
      appid: "wxsomeappid",
      type: "miniProgram",
      projectPath: process.cwd(),
      privateKeyPath: process.cwd() + "/privateKey.key",
      ignores: ["node_modules/**/*"],
    });
    
    ci.upload({
      project,
      version: "1.0.3",
      desc: "desc",
      setting: {
        es6: true,
        minify: true,
      },
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    upload方法中可配置的参数:

    类型必填说明
    projectIProject项目对象
    versionstring自定义版本号
    descstring自定义备注
    settingobject编译设置
    onProgressUpdatefunction进度更新监听函数
    robotnumber指定使用哪一个 ci 机器人,可选值:1 ~ 30, 默认 1
    threadsnumber指定本地编译过程中开启的线程数

    robot这个字段主要用于设置开发者,当同一份代码,指定不同的robot,在微信公众平台上的开发版本中都会生成对应的记录,而不是覆盖掉之前的版本。

    在这里插入图片描述
    setting字段可配置字段

    • es6: 对应小程序开发者工具的 “es6es5
    • es7: 对应小程序开发者工具的 “增强编译”
    • minifyJS: 压缩 JS 代码
    • minifyWXML: 压缩 WXML 代码
    • minifyWXSS: 压缩 WXSS 代码
    • minify: 压缩所有代码,对应小程序开发者工具的 “压缩代码”
    • codeProtect: 对应小程序开发者工具的 “代码保护”
    • autoPrefixWXSS: 对应小程序开发者工具的 “样式自动补全”

    预览

    ci.preview({
      project,
      setting: {
        es6: true,
      },
      desc: "desc",
      qrcodeFormat: "image",
      qrcodeOutputDest: path.join(__dirname, "qrcode.jpg"),
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    upload方法中可配置的参数:

    类型必填说明
    projectIProject项目对象
    descstring自定义备注,将显示在“小程序助手”开发版列表中
    settingobject编译设置
    onProgressUpdatefunction进度更新监听函数
    robotnumber指定使用哪一个 ci 机器人,可选值:1 ~ 30,默认 1
    qrcodeFormatstring返回二维码文件的格式 “image” 或 “base64”, 默认值 “terminal” 供调试用
    qrcodeOutputDeststring二维码文件保存路径
    pagePathstring预览页面路径
    searchQuerystring预览页面路径启动参数
    scenenumber默认值 1011,具体含义见场景值列表

    使用预览功能,并不会将项目上传至微信公众平台的开发版本中。

    获取本地编译后的代码

    ci.getCompiledResult(
      {
        project,
        desc: "desc",
        version,
        setting: {
          es6: true,
          minify: true,
        },
      },
      path.join(__dirname, "compiledResult.zip")
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    接受两个参数,第一个参数跟预览的一样,第二个则是代码的保存路径。

    构建 npm

    当小程序中引入了npm下载的包,需要先进行构建才能使用。

    ci.packNpm(project, {
      ignores: [],
      reporter: console.log,
    });
    
    • 1
    • 2
    • 3
    • 4

    接受两个参数,第一个参数是项目对象,第二个参数是一个对象,包含ignores(指定构建 npm 需要排除的规则)、reporter(构建回调信息)。

    小程序中创建使用 npm

    1. npm init生成package.json
    2. 安装依赖,比如说vant-weapp组件库。npm i vant-weapp -S
    3. 调用packNpm方法,或者在开发者工具中的 工具 - 构建 npm
    4. 使用。在 js 中使用require引入,组件的话需要在app.json中的usingComponents字段中引入。

    拉取最近上传版本的sourceMap

    ci.getDevSourceMap({
      project,
      robot: 1,
      sourceMapSavePath: "./sm.zip",
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    getDevSourceMap方法接受的参数:

    类型必填说明
    projectIProject项目对象
    robotnumber指定使用哪一个 ci 机器人,可选值:1 ~ 30,默认 1
    sourceMapSavePathstring文件保存路径

    上传开发云函数

    ci.cloud.uploadFunction({
      project,
      env: "云开发 id",
      name: "add",
      path: path.join(__dirname, "cloudfunctions/index"),
      remoteNpmInstall: false,
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    uploadFunction方法接受的参数:

    类型必填说明
    projectIProject项目对象
    envString云开发 id
    nameString云函数名称
    pathString云函数代码目录
    remoteNpmInstallBoolean是否云端安装依赖,默认 false

    在上传云函数时,需要在project.config.json文件中先定义cloudfunctionRoot字段。

  • 相关阅读:
    halcon分割粘连字符
    zabbix分布式系统监控
    OpenCV读取tensorflow神经网络模型:SavedModel格式转为frozen graph的方法
    代码随想录Day51 完结篇 LeetCode T84 柱状图的最大矩形
    hardhat开发dapp初始化操作
    LST list删除与修改
    微服务项目:尚融宝(29)(后端搭建:实现用户登录(2))
    结合OB Cloud区别于MySQL的4大特性,规划降本方案
    【数学建模绘图系列教程】绘图模板总结
    Java表达式及Java块
  • 原文地址:https://blog.csdn.net/qq_42880714/article/details/126441004