[简易版] 自动化脚本

前言

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可以让输出的信息更加直观。例如,一个文件处理的命令行工具,可以用绿色显示成功处理的文件数量,用红色显示处理过程中出现错误的文件。
  • 日志系统:在日志输出中,根据日志的级别(如INFOWARNERROR)可以使用不同的颜色。例如,INFO级别的日志可以用蓝色输出,WARN级别的日志用黄色输出,ERROR级别的日志用红色输出,这样可以让开发者快速区分不同级别的日志内容。

最后

同理,也可以添加其他开发者工具~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903050.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7.使用Redis进行秒杀优化

目录 1. 优化思路 总结之前实现的秒杀过程 下单流程 2. 使用Redis完成秒杀资格判断和库存 0. Redis中数据类型的选用 1.将优惠券信息保存到Redis中 2.基于Lua脚本,判断秒杀库存、一人一单,决定用户是否抢购成功 3. 开启新协程,处理数…

MongoDB-Plus

MongoDB-Plus是一款功能强大的数据库工具,它基于MongoDB,提供了更丰富的功能和更便捷的操作方式。以下是一篇关于MongoDB-Plus轻松上手的详细指南,旨在帮助初学者快速掌握其安装、配置和基础操作。 一、MongoDB-Plus概述 MongoDB是一款由C编…

鸿蒙next之导航组件跳转携带参数

官方文档推荐使用导航组件的形式进行页面管理,官方文档看了半天也没搞明白,查了各种文档才弄清楚。以下是具体实现方法: 在src/main/resources/base/profile下新建router_map.json文件 里边存放的是导航组件 {"routerMap" : [{&q…

鸿蒙API12 端云一体化开发——云函数篇

大家好,我是学徒小z,我们接着上次的端云一体化继续讲解,今天来说说云函数怎么创建和调用 文章目录 云函数1. 入口方法2. 编写云函数3. 进行云端测试4. 在本地端侧调用云函数5. 云函数传参6. 环境变量 云函数 1. 入口方法 在CloudProgram中…

软硬件开发面试问题大汇总篇——针对非常规八股问题的提问与应答(代码规范与生态管理)

软硬件开发,对于编码规范、生态管理等等综合问题的考察尤为重要。 阐述下环形缓冲区的用途 环形缓冲区(Ring Buffer)是一种固定大小的数据结构,常用于实现数据的流式传输或临时存储。在环形缓冲区中,当到达缓冲区的末尾…

Java Lock CyclicBarrier 总结

前言 相关系列 《Java & Lock & 目录》(持续更新)《Java & Lock & CyclicBarrier & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Java & Lock & CyclicBarrier & 总结》(学习总结…

什么是排列树?

一、排列树的定义 排列树就是一个能表示全排列的树形结构。全排列咱们都学过,就是所有可能的排列。 当问题的解是n个元素的某个排列时,其解空间(全部可能解构成的集合)就是n个元素的全排列,称为排列树。 以3个元素{…

1 环境配置、创建功能包、编译、Cmake文件及package文件学习笔记

1 基本结构 放张 赵虚左老师的pdf截图 2 环境配置 //每次都需配置 . install/setup.bash//或者一次配置echo "source /path/to/your/workspace_name/install/setup.bash" >> ~/.bashrcsource ~/.bashrc3 创建功能包 ros2 pkg create 包名--build-type 构建类…

ClickHouse 5节点集群安装

ClickHouse 5节点集群安装 在此架构中,配置了五台服务器。其中两个用于托管数据副本。其他三台服务器用于协调数据的复制。在此示例中,我们将创建一个数据库和表,将使用 ReplicatedMergeTree 表引擎在两个数据节点之间复制该数据库和表。 官…

简单易用的Android主线程耗时检测类 MainThreadMonitor

适用场景 debug 本地测试 文章目录 代码类 MainThreadMonitor.java使用方式 Application的attachBaseContextlog输出示例 代码类 MainThreadMonitor.java public class MainThreadMonitor {private static final String TAG "MainThreadMonitor";private static Sc…

uniapp的IOS证书申请(测试和正式环境)及UDID配置流程

1.说明 本教程只提供uniapp在ios端的证书文件申请(包含正式环境和开发环境)、UDID配置说明,请勿用文档中的账号和其他隐私数据进行测试,请勿侵权! 2.申请前准备 证书生成网站:苹果应用上传、解析&#x…

iOS Block 详解(Object-C)

Block 是苹果公司较晚推出的一个语法,与很多语法的闭包差不多意思 一:Block声明 PS:很多人学不好Block,大概率是被它的声明写法给吓到了,写法确实有点奇怪 返回值类型(^block变量名)(参数列表) 例如: int(^personBlock)(NSString *,int) 返回值类型(^block变量名)(参数列表…

iOS 18.2开发者预览版 Beta 1版本发布,欧盟允许卸载应用商店

苹果今天为开发人员推送了iOS 18.2开发者预览版 Beta 1版本 更新(内部版本号:22C5109p),本次更新距离上次发布 Beta / RC 间隔 2 天。该版本仅适用于支持Apple Intelligence的设备,包括iPhone 15 Pro系列和iPhone 16系…

uniapp 中间tabbar的实现

UI 需求 : 有五个tabbr栏 ,中间的按钮更大 ,如图 : 说明 : 在tabbar中的list 配置 其他四个tabbar :首页 精华 社区 我的 1. 在page.json中配置 在tabbar中 ,与list 平级 ,设置按钮…

sa-token 所有的异常都是未登录异常的问题

在使用satoken的时候,有这么一个问题,就是不管我是什么错误,都会弹出未登录异常,起初的时候我以为satoken的拦截器会拦截所有的异常,但是今后测试才发现忽略了一点,也是最重要最容易忽视的一点。 如果我现在…

大模型产品经理岗位职责,大模型产品经理入门到精通, 收藏这篇就够了

1. 产品及公司介绍 产品:开源企业级LLMops(大模型应用开发平台):毕昇BISHENG。7800 Github Star,被多名开发者评价为“目前见过功能最强大,最适合企业内落地的开源大模型应用开发平台”,已服务…

项目解决方案:在弱网(低带宽、高延迟、有丢包的网络)环境下建设视频监控平台的设计方案(上)

目录 一、需求分析 1、业务需求分析 (1)提升用户体验 (2)降低带宽消耗 (3)增强适应性 2、功能需求分析 (1)视频汇聚联网 (2)分辨率转换 (3&#…

AI Weekly3:过去一周重要的AI资讯汇总

本周,人工智能领域的发展势头依旧迅猛,不断突破界限。无论是自动驾驶技术的精进,AI模型的革新,还是AI在金融科技领域的广泛应用,每一项新成就都在昭示着人工智能正逐步融入我们日常生活的每一个角落。 🚀本…

轻松部署自己的AI聊天助手LocalGPT并实现无公网IP远程交互

文章目录 前言环境准备1. localGPT部署2. 启动和使用3. 安装cpolar 内网穿透4. 创建公网地址5. 公网地址访问6. 固定公网地址 前言 本文主要介绍如何本地部署LocalGPT并实现远程访问,由于localGPT只能通过本地局域网IP地址端口号的形式访问,实现远程访问…

新手入门c++(8)

到时候了,是时候给你们讲一下其他的定义形式与格式化输入输出了。 1.长整型变量 长整型变量分为两种: ①long类型 在计算机编程中,long 类型是一个整型数据类型,用于存储较大的整数。它的大小和范围取决于操作系统和编译器的实…