脚本适用于预编译框架的小程序,如:WePY / mpvue / Tina 等
脚本需要开发者工具开启命令行调用,环境依赖于 inquirer ,因为我使用的是 yarn 使用 npm 的可以自行替换。
编辑 package.json
文件
{
"scripts": {
// ...
"preupload": "run-s build", // 在运行 upload 前先编译好文件
"upload": "node ./upload.js"
},
"devDependencies": {
"inquirer": "^6.2.2"
// ...
}
// ...
}
在项目根目录新建 upload.js
// upload.js
#!/usr/bin/env node
const inquirer = require('inquirer')
const util = require('util')
const exec = util.promisify(require('child_process').exec)
const cli = '/Applications/wechatwebdevtools.app/Contents/MacOS/cli' // 根据自己的系统自行替换
inquirer
.prompt([
{
type: 'list',
name: 'version',
message: '版本级别',
choices: [
{
name: '补丁版',
value: 'patch',
},
{
name: '次版本',
value: 'minor',
},
{
name: '主版本',
value: 'major',
},
],
},
{
type: 'input',
name: 'message',
message: '更新内容',
default: `${new Date().toLocaleString()} 更新`,
},
])
.then(answers => {
;[
`git add . && git commit -m '${answers.message}'`,
`yarn version --${answers.version}`, // npm 换为 `npm version ${answers.version}` 即可
'git push --tags && git push',
`${cli} -u $npm_package_version@$INIT_CWD --upload-desc '${
answers.message
}'`,
].forEach(async cmd => {
const { stdout } = await exec(cmd)
console.log(stdout)
})
})