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

创建项目对象

创建项目对象是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/**/*"],
});

注意: 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,
  },
});

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"),
});

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")
);

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

构建 npm

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

ci.packNpm(project, {
  ignores: [],
  reporter: console.log,
});

接受两个参数,第一个参数是项目对象,第二个参数是一个对象,包含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",
});

getDevSourceMap方法接受的参数:

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

上传开发云函数

ci.cloud.uploadFunction({
  project,
  env: "云开发 id",
  name: "add",
  path: path.join(__dirname, "cloudfunctions/index"),
  remoteNpmInstall: false,
});

uploadFunction方法接受的参数:

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值