消息推送到微信:给我的npm插件加上消息推送

472 阅读5分钟

前言

之前我为了提高工作效率,实现了我的第一个npm包。

我的第一个npm包:plugin-zip-pack - 掘金 (juejin.cn)

用ts重构基于rollup的npm包踩坑记录 - 掘金 (juejin.cn)

这个插件主要用于 webpack、vite、rollup 项目打包后将指定文件夹打包为 .zip的压缩包、并且打包完成后在终端输出结果信息,包含打包名称、目录、完成时间等,结果一目了然。自己动手从0到1的过程还是蛮有成就感的。

但最近我又突然有了新的想法,如果我在打包完成后可以自动把消息推送到我的微信,那不是体验感美滋滋吗?

毕竟有的项目很大,打包时间确实很长,我们打包时也不会一直盯着终端呀! 还有个情况就是当你忙的不可开交的时候,前脚刚潇洒的在终端输入了 npm run build 后转头就去(摸鱼)忙别的工作去了

结果年龄大了、(摸鱼太入迷了)记性也不好了,本来10点打的包, 12点了,猛的一下才想起来,哇趣!!! 我的xxx项目还打了个包呢,快去看看

想到这些痛点,我觉得就是现在必须给我的插件实现这个功能,打包结果消息推送到个人微信!

npm包地址: plugin-zip-pack - npm (npmjs.com)

文档地址: silin001.github.io/docs/blogs/…

需求分析

需求有了,接下来就是想如何实现了;其实我的需求很简单,就是在打包结束后把结果推送到微信,也不一定必须是微信、企业微信,钉钉、邮箱、短信都是可以实现的,我这里选择了微信。

简单说就是消息推送功能。 虽然简单但是我没有做过呀!于是我开始查阅资料进行了解学习。

关键点:

  • 消息推送服务api
    可以使用现成别人写好的服务、当然也可以使用java、node自己实现一个;为了效率当然先使用别人的啦
  • 服务器
    因为我们写好代码,最终是要将其部署到服务器上跑的,但我这里的使用场景是每次打包时运行,而且我使用第三方消息推送服务,所以不涉及到我需要自己准备一台服务器,就不用考虑服务器这一点了

消息推送服务

经过学习和了解,市面上有一些实现好的消息推送服务,我罗列一下,有免费的有收费的,可以根据自己的需求来选择。

Sever 酱

「Server 酱」,英文名「ServerChan」,是一款「手机」和「服务器」、「智能设备」之间的通信软件。 注册要GitHub账号,免费额度每天只有5条,推送条数多的话需要付费。

官网: sct.ftqq.com/

wxpusher

WXpusher 说明文档有一些复杂,但是功能强大,感觉更像是一个为企业服务的公众平台。可以一次给很多你的客户发送消息,有完整的API。最强大的功能就是它有内信功能,就是发送消息不是用模版,而是直接发消息。很直观很清晰。server酱、虾推啥这些服务都是模版消息,需要点击一次才能看到消息。但是只能限时48小时,过期要主动开启。

官网: WxPusher微信推送服务 (zjiecode.com)

PushPlus

PushPlus 是目前功能最全,免费额度最高的一家了。如果你没有任何基础,甚至可以直接使用他们的微信服务号或者小程序接收推送。 有广告、开会员可以去除广告

官网:www.pushplus.plus

IGot

iGot 是一款聚合 APP、邮箱、微信等多种方式的第三方推送平台,您可以通过一行代码、一次请求简单实现消息推送。

官网:wahao.github.io

虾推啥

号称:一行代码推送手机通知,每日免费推送上限 300

官网: 虾推啥(xtuis.cn)

虾推啥服务使用遇到的问题

多行消息面板的样式

直接默认推送消息是可以的,但是样式有点简单,于是想修改一下消息模板的样式。

先开始这样的样式绑定到 div标签上不生效

export const xtsBgStyle = {
  width: "100%",
  height: "300px",
  border: "10px solid #000",
  padding: "10px",
  lineHeight: "20px"
};

image.png

我仔细检查单词也没错呀,就是不生效,后来尝试发现原来是 border: "10px solid #000" 这行代码中的颜色值 #000 造成的,它是不支持 16进制的写法,需要使用英文,如改成: red 就生效了

修改后生效:

image.png

最后就是自己发挥了,该模板是支持页面元素的,对于前端来说简直太简单了,想要什么样式自己实现就行啦:

image.png

最终打包完成通知效果

使用:

import { pluginZipPackVite } from 'plugin-zip-pack'
// ...

pluginZipPackVite({
  optZipName: 'v3ts测试',
  isPushVx: true,
  xtsToken: 'tokenxxx'
}),

最终效果:
image.png

image.png

总结

核心代码非常之简单所以就没贴了,其实就是封装一个函数,在打包完成钩子函数中判断是否推送消息,然后执行该函数,从而调用第三方消息推送服务api实现消息推送。

虽然功能很简单,调用api而已,但从0到1完成这个需求的过程感觉很不错,从而也会在其中有所收获。 实习过程中也借鉴了网上很多资料,谨以此篇记录自己的学习过程也希望能帮助到其他同学!

如果文章对你有帮助,可以点赞、评论、收藏、转发互动支持哈😀😀😀
点击 学习交流群(前端微信群) 加vx拉你进 前端学习交流群 让我们一起 好好学习(🐟🐟🐟)吧😎😎😎

参考资料

掘金自动签到+微信推送 - 掘金 (juejin.cn)

使用WxPusher给自己的个人微信发送提醒消息(WxPusher微信推送服务) - 知乎 (zhihu.com)

个人版简介 - 微加机器人个人版 (weplusbot.com)

有没有什么简单免费的推送告警通知到微信的方法,大神们,给点意见? - 知乎 (zhihu.com)