uniapp的微信小程序一键发布

568 阅读2分钟

大家好,第一次写文章。最近在搞公司的uniapp快速开发模板,发现微信小程序没有一键部署的功能,之前taro是有插件的。于是打算自己写一个脚本来实现该功能,现在给大家分享下这个脚本。 基础架构 uniapp 3.0 + vue3.0 + vite2.x

下载官方插件

首先我们需要下载微信小程序的发布插件

npm install miniprogram-ci -D

获取秘钥

之后去小程序的后台管理系统 开发 -> 开发管理 -> 开发设置 -> 小程序代码上传 把小程序代码上传秘钥下载下来,并把IP白名单关掉,因为公司网络一般会变,复制下当前APPid

准备工作

在src同级目录创建一个keys文件夹,将刚才的上传秘钥放到文件夹下,名字应该是wx + appid + .key.如果不是改为这个,后面脚本需要。

脚本编写

在src同级下创建一个deploy.js文件

const ci = require('miniprogram-ci')
const path = require('path')
const dotenv = require("dotenv")  // 读取环境变量用

const envType = process.argv[process.argv.length - 1];  // 获取传入的环境变量名称
dotenv.config({path: `.env.${envType}`}) // 读取环境变量

const WX_APPID = process.env.VITE_WX_APPID  // 
const WX_VERSION = '1.0.0';    // 版本号
const WX_DESC = '备注'        // 备注

; (async () => {
    const project = new ci.Project({
        appid: WX_APPID,
        type: 'miniProgram',
        projectPath: path.join(__dirname, './dist/build/mp-weixin'),  // 获取打包的路径
        privateKeyPath: path.join(__dirname, `./keys/${WX_APPID}.key`), // 你要上传的小程序APPid
        ignores: ['node_modules/**/*'],
    })
    await ci.upload({
        project,
        version: WX_VERSION,
        desc: WX_DESC,
        robot: WX_ROBOT,
        setting: {
            es7: true,
            minifyJS: true,  // 压缩 JS 代码
            minify: true     // 压缩所有代码,对应小程序开发者工具的 "压缩代码"
        },
        onProgressUpdate: console.log,
    })
})()

配置环境变量

.env.test文件

# 微信小程序appid
VITE_WX_APPID=xxxx

package.json

注意在打包命令后用node执行你刚才写的脚本,脚本后面的是你的环境变量名称,因为不是项目内部的脚本,所以需要你把环境变量名传进去。这样你就可以实现开发,测试,预生产,生产不同环境不需每次都修改APPID,而是自动读取环境变量中的APPID来实现一键发布了。

"build:weixin-test": "uni build --mode test -p mp-weixin && node deploy.js test",