UNPKG

taitan

Version:

小程序开发辅助工具

179 lines (167 loc) 5.03 kB
#! /usr/bin/env node const { Command } = require("commander"); const chalk = require("chalk"); const program = new Command(); const wxappCliHelper = require("./helper/wxappCliHelper"); const { createProject, getProjectByDir, logPageList, logProjectList, } = require("./core/tools"); const { localData } = require('./utils') const config = require("./config"); const { getProjectNameFromCmd, selectProjectFromCmd, removeProjectFromList, removeProjectPage, selectPage, addPageToProject, selectCachePage, } = require("./helper/inputHelper"); program.command("set weapp-tool-path <path>").action((...args) => { let path = args[1]; localData("wxappCliPath", path); console.log(chalk.green("微信开发中工具cli-path设置成功")); console.log(chalk.green(`weapp-tool-path -> ${path}`)); }); program.command("show weapp-tool-path").action(() => { console.log(chalk.green(`weapp-tool-path -> ${localData('wxappCliPath')}`)); }); program .command("list <type>") .option("-s, --select") .description("查看项目列表,type=project or page") .action(async (type, options) => { if (type === "project") { logProjectList(); } else if (type === "page") { let curProject = {}; if (options.select) { let res = await selectProjectFromCmd("请选择要查看的项目"); curProject = res; } else { curProject = getProjectByDir(config.dir); } let plist = curProject.pageList; logPageList(plist); } }); program .command("add <action>") .option("-s, --select") .description("添加项目到项目列表") .action((action, options) => { if (action === "project") { getProjectNameFromCmd().then((res) => { if (res.projectName) { const cres = createProject(res.projectName); if (cres) { console.log(chalk.green("创建成功~")); } else { console.log(chalk.red("创建失败~")); } } }); } else if (action === "page") { let message = options.select ? "请选择要保存的页面路径" : "请输入要保存的页面路径"; addPageToProject(message, options.select ? "select" : "input"); } }); program .command("clear") .argument("<type>") .option("-a, --all") .description("移除项目") .action((arg, options) => { if (options.all) { if (arg === "project") { removeProjectFromList(true); } else if (arg === "page") { removeProjectPage(true); } } else { if (arg === "project") { removeProjectFromList(); } else if (arg === "page") { removeProjectPage(); } } }); program .command("open") .description("在开发者工具中打开") .option("-d, --dir <type>") .option("-s, --select") .action((options) => { if (options.select) { selectProjectFromCmd("请选择要打开的项目").then((res) => { wxappCliHelper.open(res.dir); }); } else { let dir = options.dir ? options.dir : config.dir; wxappCliHelper.open(dir); } }); program .command("preview") .description("生成预览二维码") .option("-d, --dir <type>", "手动输入项目绝对路径") .option("-s, --select", "选择已保存的项目路径") .option("-p, --page", "选择app.json中的pages") .option("-i, --input", "手动输入页面路径") .option("-ps, --page-select", "选择一保存的编译模式") .action(async (options) => { let dir = options.dir ? options.dir : config.dir; let currentPage = {} //选择项目 if (options.select) { let projectres = await selectProjectFromCmd("请选择要预览的项目"); dir = projectres.dir; }else{ let project = getProjectByDir(dir); if(!project){ return } currentPage = { page: project.appInfo.pages[0], }; } //选择app.json中的页面 if (options.page) { let sp = await selectPage(dir, "请选择要预览的页面", "select"); currentPage = { page: sp.page, query: sp.query, }; } else if (options.pageSelect) { //选择已保存的编译 let sp = await selectCachePage(dir, "请选择要预览的页面"); currentPage = { page: sp.page, query: sp.query, }; } else if (options.input) { //选择手动输入 let sp = await selectPage(dir, "请输入要预览的页面路径", "input"); currentPage = { page: sp.page, query: sp.query, }; } let logRes = `${chalk.yellow("预览页面信息:")}\n${chalk.green( "页面路径:" )}${currentPage.page || ""}\n${chalk.green("页面参数:")}${ currentPage.query || "" }\n${chalk.green("--------------------")}`; console.log(logRes); wxappCliHelper.preview({ projectDir: dir, condition: currentPage.page, query: currentPage.query, }); }); program.parse();