# 概述

ks-miniprogram-ci (opens new window) 是从快手开发者工具中抽离的关于小程序项目代码的编译模块。

开发者可不打开小程序开发者工具,独立使用 ks-miniprogram-ci (opens new window) 进行小程序代码的上传和预览操作。

# 密钥及 IP 白名单配置

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

# 功能

ks-miniprogram-ci 目前提供以下能力:

  1. 上传代码,对应小程序开发者工具的上传
  2. 预览代码,对应小程序开发者工具的预览
  3. 支持 node 脚本调用方式和 命令行 调用方式

# 脚本调用

npm install ks-miniprogram-ci --save

# 创建Project对象

const ci = require('ks-miniprogram-ci')
// 注意: new ci.Project 调用时,请确保项目代码已经是完整的,避免编译过程出现找不到文件的报错。
const project = new ci.Project({
  appid: 'kssomeappid',
  type: 'miniProgram',
  projectPath: 'the/project/path',
  privateKeyPath: 'the/privatekey/path'
  ignores: ['node_modules/**/*'],
})
类型 说明
appid string 小程序项目的appid
type string 项目的类型,当前只支持 miniProgram
projectPath string 项目的路径,即project.config.json所在目录
privateKeyPath string 私钥,在获取项目属性和上传时用于鉴权使用,在 快手开放平台 (opens new window) 上登录后下载
ignores string[] 忽略的文件

# 上传

const ci = require('ks-miniprogram-ci')
;(async () => {
  const project = new ci.Project({
    appid: 'kssomeappid',
    type: 'miniProgram',
    projectPath: 'the/project/path',
    privateKeyPath: 'the/path/to/privatekey',
    ignores: ['node_modules/**/*'],
  })
  const uploadResult = await ci.upload({
    project,
    version: '1.1.1',
    desc: 'hello',
    onProgressUpdate: console.log,
  })
  console.log(uploadResult)
})()

# 参数

类型 必填 说明
project ci.Project Project对象
version string 自定义上传版本号
desc string 自定义备注
onProgressUpdate function 进度更新监听函数

# 返回

类型 说明
subPackageInfo Array<{}> 小程序包信息

# 预览

const ci = require('ks-miniprogram-ci')
;(async () => {
  const project = new ci.Project({
    appid: 'kssomeappid',
    type: 'miniProgram',
    projectPath: 'the/project/path',
    privateKeyPath: 'the/path/to/privatekey',
    ignores: ['node_modules/**/*'],
  })
  const previewResult = await ci.preview({
    project,
    desc: 'hello',
    qrcodeFormat: 'image',
    qrcodeOutputDest: '/path/to/qrcode/file/destination.jpg',
    onProgressUpdate: console.log,
    // pagePath: '/pages/index/index', // 预览页面
    // searchQuery: 'a=1&b=2',  // 预览参数 [注意!]这里``字符在命令行中应写成转义字``
    scene: '011001' // 场景值
  })
  console.log(previewResult)
})()

# 参数

类型 必填 说明
project ci.Project #项目对象
onProgressUpdate function 进度更新监听函数
qrcodeFormat string 返回二维码文件的格式 "image" 或 "base64", 默认值 "terminal" 供调试用
qrcodeOutputDest string 二维码文件保存路径
pagePath string 预览页面路径
searchQuery string 预览页面路径启动参数
scene string 场景值

# 返回

类型 说明
subPackageInfo Array<{}> 小程序包信息

# 代理

ks-miniprogram-ci 使用了 get-proxy 模块来自动获取代理地址。 如果不适用ci.proxy()方法或者--proxy参数来指定代理,那么 miniprogram-ci 将会按照以下顺序去获取 https 代理地址

  1. 获取环境变量中的 HTTPS_PROXY
  2. 获取环境变量中的 https_proxy
  3. 获取环境变量中的 HTTP_PROXY
  4. 获取环境变量中的 http_proxy
  5. 获取npm配置的 https-proxy
  6. 获取npm配置的 http-proxy
  7. 获取npm配置的 proxy

把 mp.kuaishou.com 加入到环境变量中的 no_proxy,ks-miniprogram-ci 将不通过代理发送网络请求

const ci = require('ks-miniprogram-ci')
ci.proxy('YOUR_PROXY_URL')

# 命令行调用

npm install -g ks-miniprogram-ci

# 上传

ks-miniprogram-ci 
  upload 
  --pp ./demo-proj/ 
  --pkp ./private.YOUR_APPID.key 
  --appid YOUR_APPID 
  --uv PACKAGE_VERSION 

# 预览

ks-miniprogram-ci 
  preview 
  --pp ./demo-proj/ 
  --pkp ./private.YOUR_APPID.key 
  --appid YOUR_APPID 
  --qrcode-format image 
  --qrcode-output-dest '/tmp/x.jpg' 
  --scene '011001'

# 查看Help

ks-miniprogram-ci --help
#ks-miniprogram-ci upload --help
#ks-miniprogram-ci preview --help

# 第三方平台开发

第三方平台开发与普通开发模式无异。 使用第三方平台开发模式时,应注意:

  1. 请确保项目中存在正确的 ext.json
  2. 密钥文件是第三方平台绑定的开发小程序 appid 的密钥文件
  3. ip白名单是第三方平台绑定的开发小程序 appid 的 ip 白名单
  4. 调用传入的 appid 是第三方平台绑定的开发小程序 appid 关于第三方平台开发模式,请参考这里 (opens new window)
Copyright ©2024, All Rights Reserved