UNPKG

shell-deploy

Version:

快速创建和执行一个自动化任务

87 lines (71 loc) 2.94 kB
#!/usr/bin/env node var path = require("path"); var prompts = require("prompts"); var data = require("./config"); var file = require("./util/file"); var common = require("./util/common"); async function create(){ function onCancel(){ console.log("创建任务被取消"); process.exit(); } //填写任务名称 var conf = data.initConf; conf = Object.assign({}, conf, await prompts(data.nameStep, {onCancel})); conf.name = conf.name.replace(" ", ""); //v0.2.4: 有时候输入会有空格,去掉首尾空格; // 增加覆盖任务提醒; if(common.isExitTaskName(conf.name) || common.isExistScriptName(conf.name)){ var coverObj = Object.assign({}, await prompts(data.coverStep, {onCancel})); if(coverObj.isCover == false){ create(); return; } } // 填写任务描述; conf = Object.assign({}, conf, await prompts(data.inforStep, {onCancel})); // 选择任务; conf.options = await common.createStep(1, onCancel); //生成配置文件,将选项的值写入模板中; conf.options.map(function(option){ conf.steps.push(common.getStep(data, option)); }); delete conf.options; /* * 判断之前是否已经有了配置文件? * 如果之前有配置文件,直接在之前的基础上添加; * 如果之前没有配置文件,则使用默认数据; */ var deploy = common.getDeploy(); var unionActions = []; deploy.actions.map(function(action){ if(action != null && action.name != conf.name){ unionActions.push(action); } }); unionActions.push(conf); deploy.actions = unionActions; var deployFilePath = common.getDeployFilePath(); file.create(deployFilePath, JSON.stringify(deploy, null, 2)); console.log(!file.isExist(deployFilePath) ? "创建配置文件成功" : "更新配置文件成功"); /* * 2020/2/18: 修改package.json文件; */ var packagePath = common.getPackageFilePath(); if(file.isExist(packagePath)){ var package = JSON.parse(file.read(packagePath)); package.scripts = package.scripts == undefined ? {} : package.scripts; package.scripts[conf["name"]] = `npx shell-deploy ${conf["name"]}`; file.create(packagePath, JSON.stringify(package, null, 2)); } console.log(`设置${conf["name"]}命令成功`); /* * 2020/3/4: 完善文案引导, */ console.log("下面步骤:"); console.log(`1.完善配置项,点击编辑: ${path.join(process.cwd(), "deploy.json")}`); console.log(`2.执行npm run ${conf["name"]} 或者 yarn run ${conf["name"]}命令` ); } /* * 创建第一步 */ module.exports = create;