code-push 交互式命令行脚本

原创
2016/06/25 14:14
阅读数 1K

一直觉得 RN 的升级方式挺酷的(交互式命令行),研究了一下,搞了个 code-push 的交换脚本。

准备工作

npm install inquirer --save-dev npm install shelljs --save-dev npm install chalk --save-dev

当然,code-push 环境必须已经设置好了。

脚本内容

名称: tools/codepush-cli.js

/**
 * code-push 交互式命令行发布工具, 可以根据相应提示进行选择或输入, 更加便利。
 */
/* eslint-disable */
var shell = require("shelljs");
var inquirer = require('inquirer');
var chalk = require("chalk");

console.log(chalk.cyan("  _____        __  " + chalk.green("  ___           __ ")));
console.log(chalk.cyan(" / ___/__  ___/ /__" + chalk.green(" / _ \\__ _____ / / ")));
console.log(chalk.cyan("/ /__/ _ \\/ _  / -_)" + chalk.green(" ___/ // (_-</ _ \\")));
console.log(chalk.cyan("\\___/\\___/\\_,_/\\__/" + chalk.green("_/   \\_,_/___/_//_/")));
console.log(chalk.cyan("======================================"));

console.log(chalk.bold.cyan('\n欢迎使用 code-push 交互式命令行发布工具\n'));

var questions = [{
    type: 'list',
    name: 'platform',
    message: '请选择发布平台',
    choices: ['iOS', 'Android'],
    filter: function (val) {
        return val.toLowerCase();
    }
}, {
    type: 'list',
    name: 'deploymentName',
    message: '请选择发布目标',
    choices: ['Staging', 'Production']
}, {
    type: 'input',
    name: 'targetBinaryVersion',
    message: '请输入 iOS 或 Android 代码当前版本号(格式为: 1.0.0):',
    validate: function (value) {
        var pass = value.match(/^[\d]+\.[\d]+\.[\d]+$/i);
        if (pass) {
            return true;
        }

        return '请输入有效版本号(格式为: 1.0.0)';
    }
}, {
    type: 'input',
    name: 'description',
    message: '请输入更新信息, [\\n]换行',
    default: '修正一些 Bug'
}, {
    type: 'confirm',
    name: 'confirm',
    message: '确定发布?',
    default: false
}];

inquirer.prompt(questions).then(function (answers) {
    console.log();

    if (!answers.confirm) {
        console.log(chalk.bold.red('放弃发布!'));
    } else {
        var cmd = `code-push release-react YOUR_APP_NAME ${answers.platform} --deploymentName ${answers.deploymentName}  --targetBinaryVersion "${answers.targetBinaryVersion}" --description "${answers.description}"`;
        console.log(chalk.cyan('> ' + cmd));
        console.log();

        shell.exec(cmd);
    }

    console.log();
});

效果图

效果1

效果2

最后

可以根据自己的项目需要修改上面的 YOUR_APP_NAME, 当然,也可以很方便扩充命令,例如提供 Mandatory 设置。

还可以在 package.jsonscript 里面配置一行:

"codepush": "node tools/codepush-cli.js"

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部