uni-app vue-cli Jenkins通过CI构建到微信公众平台
uni-app vue-cli CI流程搭建
目前可用服务构建发布小程序,例如Jenkins等,可方便开发者手动点上传.
默认目录
其实就是正常的vue-cli的工程目录,其中的version.config.json,可用可不用,版本号在package.json中的version,对应的key是在微信公众后台可以下载的
npm run updata
对应的环境变量可自行添加
地址:https://github.com/gao18516823865/uni-app
有疑问留言,回复不及时谅解~
ci.js
const ci = require('miniprogram-ci')
const fs = require('fs');
const inquirer = require('inquirer');
const projectConfig = require('./project.config.json');
// const versionConfig = require('./version.config.json');
const pkg = require('./package.json');
/*ci实例*/
const project = new ci.Project({
appid: projectConfig.appid,
type: projectConfig.type,
projectPath: projectConfig.projectPath,
privateKeyPath: './ci-private.key',
ignores: ['node_modules/**/*'],
})
/*ci上传*/
async function upload({ version = '0.0.0', versionDesc = 'test' }) {
await ci.upload({
project,
version,
desc: versionDesc,
setting: {//可修改
es7: true,
minify: true,
autoPrefixWXSS: true
},
onProgressUpdate: console.log,
})
}
/** 增加版本号 */
function versionNext(array, idx) {
let arr = [].concat(array);
++arr[idx];
arr = arr.map((v, i) => i > idx ? 0 : v);
if (!parseInt(arr[arr.length - 1])) arr.pop();
return arr.join('.');
}
/** 获取版本选项 */
function getVersionChoices(version) {
const vArrsDesc = ['raise major: ', 'raise minor: ', 'raise patch: ', 'raise alter: '];
let vArrs = version.split('.');
let choices = vArrsDesc.map((item, index, array) => {
array.length > vArrs.length ? vArrs.push(0) : '';
return vArrsDesc[index] + versionNext(vArrs, index)
}).reverse();
choices.unshift('no change');
return choices;
}
function inquirerResult({
version,
versionDesc
} = {}) {
return inquirer.prompt([
// 设置版本号
{
type: 'list',
name: 'version',
message: `设置上传的版本号(当前版本号: ${version}):`,
default: 1,
choices: getVersionChoices(version),
filter(opts) {
if (opts === 'no change') {
return version;
}
return opts.split(': ')[1];
}
},
// 设置上传描述
{
type: 'input',
name: 'versionDesc',
message: `写一个简单的介绍来描述这个版本的改动过:`,
},
]);
}
/*ci入口函数*/
async function init() {
// Get modification information
let versionData = await inquirerResult(pkg);
//upload
await upload(versionData);
fs.writeFileSync('./version.config.json', JSON.stringify(pkg), err => {
if (err) {
console.log('自动写入app.json文件失败,请手动填写,并检查错误');
}
});
}
init()
project.config.json
{
"projectPath": "dist/dev/mp-weixin/",//上传目录可修改
"description": "项目配置文件",
"setting": {//可修改,目前这个是build可以在微信开发者工具中拿到
"urlCheck": false,
"es6": true,
"enhance": true,
"postcss": true,
"preloadBackgroundData": false,
"minified": false,
"newFeature": false,
"coverView": true,
"nodeModules": false,
"autoAudits": false,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false,
"uglifyFileName": false,
"checkInvalidKey": true,
"checkSiteMap": true,
"uploadWithSourceMap": true,
"compileHotReLoad": false,
"lazyloadPlaceholderEnable": false,
"useMultiFrameRuntime": true,
"useApiHook": true,
"useApiHostProcess": true,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
"enableEngineNative": false,
"useIsolateContext": true,
"userConfirmedBundleSwitch": false,
"packNpmManually": false,
"packNpmRelationList": [],
"minifyWXSS": true,
"disableUseStrict": false,
"showES6CompileOption": false,
"useCompilerPlugins": false
},
"type": "miniprogram",
"appid": appid,
"condition": {
"search": {
"list": []
},
"conversation": {
"list": []
},
"game": {
"list": []
},
"miniprogram": {
"list": []
}
}
}