miniprogram-ci 是从微信开发者工具中抽离的关于小程序/小游戏项目代码的编译模块。
开发者可不打开小程序开发者工具,独立使用 miniprogram-ci 进行小程序代码的上传、预览等操作。
详见微信官方文档.小程序 > 开发辅助 > CI
使用 miniprogram-ci 前应在微信公众平台登录小程序,访问“开发-开发管理-开发设置”后下载“代码上传密钥”,并配置 IP 白名单。
开发者可选择打开 IP 白名单,打开后只有白名单中的 IP 才能调用相关接口。
代码上传密钥拥有预览、上传代码的权限,密钥不会明文存储在微信公众平台上,一旦遗失必须重置,请开发者妥善保管
新建文件夹minitool,并将代码上传密钥文件private.wxxxxxxxxxxx.key复制到该目录
进入目录minitool,执行以下命令,为项目安装miniprogram-ci模块
npm install miniprogram-ci --save
const ci = require('miniprogram-ci') ;(async () => { const project = new ci.Project({ appid: 'wxxxxxxxxxxxxxx', type: 'miniProgram', projectPath: 'D:\\workspace\\project', privateKeyPath: 'private.wxxxxxxxxxxx.key', ignores: ['node_modules/**/*'], }) const uploadResult = await ci.upload({ project, version: '1.0.0', desc: '第1版', setting: { es6: true, // es6 转 es5 es7: true, // 增强编译 disableUseStrict: true, autoPrefixWXSS: true, // 上传时样式自动补全 minifyJS: true, minifyWXML: true, minifyWXSS: true, }, }) console.log(uploadResult) })()
node upload.js
在小程序页面 > 管理 > 版本管理中,检查代码是否顺利上传
const ci = require('miniprogram-ci') ;(async () => { const project = new ci.Project({ appid: 'wxxxxxxxxxxxxxx', type: 'miniProgram', projectPath: 'D:\\workspace\\project', privateKeyPath: 'private.wxxxxxxxxxxx.key', ignores: ['node_modules/**/*'], }) const uploadResult = await ci.upload({ project, version: '1.0.0', desc: '第1版', setting: { es6: true, // es6 转 es5 es7: true, // 增强编译 disableUseStrict: true, autoPrefixWXSS: true, // 上传时样式自动补全 minifyJS: true, minifyWXML: true, minifyWXSS: true, }, qrcodeFormat: 'image', qrcodeOutputDest: 'destination.jpg', // pagePath: 'pages/index/index', // 预览页面 // searchQuery: 'a=1&b=2', // 预览参数 [注意!]这里的`&`字符在命令行中应写成转义字符`\&` // scene: 1011, // 场景值 }) console.log(previewResult) })()
node preview.js
打开destination.jpg,扫码查看。
const ci = require('miniprogram-ci') const path = require('path') ;(async () => { const project = new ci.Project({ appid: 'wxxxxxxxxxxx', type: 'miniProgram', projectPath: 'D:\\workspace\\project', privateKeyPath: 'private.wxxxxxxxxxxx.key', ignores: ['node_modules/**/*'], }) // zip 文件保存位置 const saveZipPath = path.join(__dirname, 'compiledResult.zip') const compiledResult = await ci.getCompiledResult({ project, version: '1.0.0', desc: '第1版', setting: { es6: true, // es6 转 es5 es7: true, // 增强编译 disableUseStrict: true, autoPrefixWXSS: true, // 上传时样式自动补全 minifyJS: true, minifyWXML: true, minifyWXSS: true, }, }, saveZipPath) console.log(compiledResult) })()
node compile.js
确认根目录中是否存在compiledResult.zip,解压查看文件内容