taitan
Version:
小程序开发辅助工具
179 lines (167 loc) • 5.03 kB
JavaScript
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();