前言
uniapp cli项目中没办法自动化打开微信开发者工具,需要手动打开比较繁琐,故此自动化脚本就诞生啦~
实现
const spawn = require("cross-spawn");
const chalk = require("picocolors");
const dayjs = require("dayjs");
const base = process.cwd();
const { TOOL } = process.env;
const toolPath = {
weixin: "xx/微信web开发者工具",
};
let projectPaths = {
weixin: `${base}/dist/dev/mp-weixin`,
};
const cwd = toolPath[TOOL];
const projectPath = projectPaths[TOOL];
let isCorrect = !!cwd;
const openTool = () => {
if (TOOL === "weixin") {
console.log(
chalk.cyan("正在打开微信开发者工具"),
chalk.yellowBright(`当前时间:${getCurrentDate()}`)
);
}
if (isCorrect) {
spawn("cli", ["open", "--project", projectPath], {
cwd,
stdio: "inherit",
}).on("error", (error) => {
console.log("error", error);
});
} else {
console.log(chalk.red("未找到任何开发者工具"));
}
};
const getCurrentDate = () => {
return dayjs().format("YYYY-MM-DD HH:mm:ss");
};
openTool();
效果
成功
失败
工具库
cross-spawn
简介
cross-spawn
是一个用于在 Node.js 中跨平台(如 Windows、Linux、macOS 等)生成子进程的库。它是child_process
模块的一个包装,解决了在不同操作系统上执行外部命令可能出现的兼容性问题。- 在 Node.js 的原生
child_process
模块中,虽然提供了强大的功能来创建和管理子进程,但在不同操作系统上,命令的执行方式和一些参数的处理可能会有所不同。例如,在 Windows 上,命令的路径和参数的分隔方式与 Unix - like 系统(如 Linux 和 macOS)有所区别。cross-spawn
则提供了一种统一的方式来处理这些差异。
dayjs
简介
Day.js 是一个轻量级的 JavaScript 日期处理库
基础使用
- 使用
format
方法来格式化日期。常见的格式化字符包括YYYY
(四位数的年份)、MM
(两位数的月份)、DD
(两位数的日期)、HH
(24 小时制的小时数)、mm
(分钟数)、ss
(秒数)等。 - 示例:
const formattedDate = dayjs().format("YYYY-MM-DD HH:mm:ss");
,这个命令会将当前日期和时间格式化为年-月-日 时:分:秒
的形式。 - 利用
subtract
方法减去时间。比如,获取当前日期往前推 1 个月的日期:const oneMonthBefore = dayjs().subtract(1, "month");
,这里的参数含义和add
方法类似。
picocolors
简介
picocolors
是一个用于在 Node.js(也可以用于浏览器环境)中进行彩色文本输出的轻量级库。它提供了一种简单的方式来为终端中的文本添加颜色和样式。
应用场景
- 命令行工具开发:当开发命令行工具时,使用
picocolors
可以让输出的信息更加直观。例如,一个文件处理的命令行工具,可以用绿色显示成功处理的文件数量,用红色显示处理过程中出现错误的文件。 - 日志系统:在日志输出中,根据日志的级别(如
INFO
、WARN
、ERROR
)可以使用不同的颜色。例如,INFO
级别的日志可以用蓝色输出,WARN
级别的日志用黄色输出,ERROR
级别的日志用红色输出,这样可以让开发者快速区分不同级别的日志内容。
最后
同理,也可以添加其他开发者工具~