# 概述
ks-miniprogram-ci (opens new window) 是从快手开发者工具中抽离的关于小程序项目代码的编译模块。
开发者可不打开小程序开发者工具,独立使用 ks-miniprogram-ci (opens new window) 进行小程序代码的上传和预览操作。
# 密钥及 IP 白名单配置
使用 ks-miniprogram-ci 前应访问"快手开发者平台-开发-开发者设置 (opens new window)"下载代码上传密钥,并配置 IP 白名单 开发者可选择打开 IP 白名单,打开后只有白名单中的 IP 才能调用相关接口。我们建议所有开发者默认开启这个选项,降低风险 代码上传密钥拥有预览、上传代码的权限,密钥不会明文存储在快手开放平台上,一旦遗失必须重置,请开发者妥善保管!
# 功能
ks-miniprogram-ci 目前提供以下能力:
- 上传代码,对应小程序开发者工具的上传
- 预览代码,对应小程序开发者工具的预览
- 支持 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 代理地址
- 获取环境变量中的 HTTPS_PROXY
- 获取环境变量中的 https_proxy
- 获取环境变量中的 HTTP_PROXY
- 获取环境变量中的 http_proxy
- 获取npm配置的 https-proxy
- 获取npm配置的 http-proxy
- 获取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
# 第三方平台开发
第三方平台开发与普通开发模式无异。 使用第三方平台开发模式时,应注意:
- 请确保项目中存在正确的 ext.json
- 密钥文件是第三方平台绑定的开发小程序 appid 的密钥文件
- ip白名单是第三方平台绑定的开发小程序 appid 的 ip 白名单
- 调用传入的 appid 是第三方平台绑定的开发小程序 appid 关于第三方平台开发模式,请参考这里 (opens new window)