black and white penguin toy

如何使用 GitHub Action 自动发布 NPM

我经常会用 GitHub 来存储我的代码,其中很大一类是各种 npm 包。

由于本地常年配置了 npm 的 mirror,我更喜欢使用 GitHub 自动发布。

有了这个配置,我只需要编写完代码后,并执行如下命令,即可实现自动发布包.

npm version patch
git push --all
git push --tags

以下是对应的 GitHub action file。

使用时需要配置 npm_token 为你自己的 NPM Token。这个 Token 可以在 NPM 后台获取到。

name: Node.js Package
on:
  push:
    tags:
    - "*"
jobs:
  publish-npm:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: 14
          registry-url: https://registry.npmjs.org/
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.npm_token}}
Code language: JavaScript (javascript)
green and black digital device

如何用 CURL 看证书信息

在进行证书故障排查的时候,难免要查看证书信息。不过目前的浏览器在设计上,查看证书详情变得困难很多,因此,你可以借助 CURL 来查看证书信息。

具体的命令

 curl --insecure -v https://域名 2>&1 | awk 'BEGIN { cert=0 } /^\* SSL connection/ { cert=1 } /^\*/ { if (cert) print }'
Code language: JavaScript (javascript)

返回结果如下,其中包含了域名证书当中的过期时间、申请者等核心信息,方便你进行排查。

➜  ~  curl --insecure -v https://www.ixiqin.com 2>&1 | awk 'BEGIN { cert=0 } /^\* SSL connection/ { cert=1 } /^\*/ { if (cert) print }'
* SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=www.ixiqin.com
*  start date: Aug 15 00:00:00 2021 GMT
*  expire date: Nov 13 23:59:59 2021 GMT
*  issuer: C=AT; O=ZeroSSL; CN=ZeroSSL RSA Domain Secure Site CA
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7fe096810a00)
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
* Connection #0 to host www.ixiqin.com left intact
* Closing connection 0
Code language: PHP (php)
man in white dress shirt wearing white goggles

人生新体验:全麻手术

9月1日晚,我骑电动车躲避其他车辆时,车辆发生了侧翻。人倒地,后120送至医院发现是左侧锁骨骨折。当晚入院。入住医院的次日,医生帮我排了全麻手术,来修复锁骨骨折的问题。

以下是我关于全麻手术的一些记录

为什么要做全麻?

我的受伤部位是左侧的锁骨,距离脖子的位置是比较近的,手术过程中如果发现异动,风险极高。做全麻更加安全。

具体流程

断食断水

在手术前一天,护士会通知你,提前一天晚上12 点以后,就不要吃东西了,手术前不能吃东西,手术后才能吃东西。

不过不用担心饿的问题。在第二天,护士会给你注射营养液,让你不会感受到饥饿和口渴。

签署同意书

全麻手术相比于局部麻醉, 是拥有更大的风险的,毕竟,如果麻醉医生手一抖,可能你就彻底的睡过去了。因此,相应的风险是需要你知晓,并认可的。

在手术前,麻醉医生和主刀医生会找到你,要求你签署一个麻醉同意书,相信大家在电视剧中也看到过类似的东西。

前往手术室等待手术

签署完后,就等待护士找你去手术室。我是下午两点被叫去手术室的。

因为我是锁骨手术,本身可以正常行走,因此,就没有躺着去手术室。实际上也可以躺着,但我想自己这么胖,就不太好请瘦弱的护士把我送过去了。

到了手术室门口,就先坐在门口等待护士整理手术室。

准备开始手术

进入手术室后,你就需要躺在手术床上。脱去你的所有衣物,然后护士会为你盖上手术衣,麻醉医生也会进来,开始和你聊天,并为你注射麻醉药。

注射麻醉药以后很快,你就会感受到意识开始迟缓,直到你彻底昏过去。

手术中

手术中的整个过程中你是无感知的,我自己有感受的时候,已经是手术结束后了。

手术完成后,你会开始初步恢复意识,护士会让你挪到可以拉动的床上,把你送到麻醉恢复监控室。

麻醉恢复

麻醉恢复需要 4-6 个小时,你需要在这里躺着,一动不动,静静的等待意识恢复完全的清醒。

回到病房

当你的麻醉恢复期渡过后,就可以回到自己的病房了,开始你的修养生活。

Tips

麻醉恢复很无聊怎么办?

可以请护士帮你放歌听。比如我当时就是护士有个收音机,让我听了两个小时,熬过了完全清醒的两个小时。

One More Thing

全麻手术别看手术过程中舒服。手术完通过。。。因为全麻手术要插导尿管。。。这都术后第二天了,我撒尿还是疼。。。。

不过,疼了两天,也有经验了。撒尿攒着。。。一次多尿一会,就没那么痛了。

summary

2021 年 8 月月度总结

TLDR

本月看视频更多一些,奈飞的片子的质量还是不错的。这里有很多值得我学习的点。

9月开学了,希望我也能开学,开始学习。

定性分析

社交

本月出行去了趟上海,见了VSCode 中文社区的韩骏老师;还请声动活泼的11同学吃了一段饭。

旅行

去上海录了一次播客;

定量分析

本月内容输出总结

本月在博客写了几篇技术文章,其中,个人认为写的最好的应该属这两篇:

本月收支总结

本月收入: 34590

本月支出: 26543.8

总体来说,略有盈余,希望新的一个月再接再励,本月因为搬家,租房相关消费近5000元,宠物消费近3000元(主要是冰淇淋绝育检查)。

预期九月份高支出项目:

  • 宠物支出:本月冰淇淋准备做绝育;白手套准备打疫苗(第二年的狂犬)
  • 电子设备支出:有可能换 iPhone 13 。前段时间 XS 坏了,换了个 iPhone SE 2020 在用。打算等 13 出来换一个新的双卡手机,这样我的手表中的蜂窝网络就可以用起来了。

本月读书总结

本月读书 2 本,以下为读书笔记:

  • 《小狗钱钱2》:这本书相比于 1 ,离钱更远,离美德更近。可以看看,但可能相比于 1 ,对于人的帮助不那么大。
  • 《斯科特·凯尔比的零基础摄影后期课》:个人感觉非常实用的一本书。

本月学习总结

本月学习了一门课程:

  • 彩蜂摄影杂志的后期课程

本月娱乐总结

本月继续看 Netflix,看完的视频包括:

  • Rick And Morty 第五季
  • 爱、死亡与机器人 第二季
  • 太空部队

年度回顾

  • Linux 中国的改造计划:0/2
  • 海外收入计划进度:0/$1000
  • 减肥计划:210/170
  • 优质文章产出:2/50
  • 1W stars 项目:1500/10000
  • 年入 5000 的项目:0/5000
  • 收入结余:25K
Hello World text

彩云翻译 API 丢失换行的问题

在使用彩云翻译的 API 进行应用开发的时候,遇见了一个很尴尬的问题,提交上去的内容会丢失换行。

202108292019753
示意图

于是给彩云翻译的邮箱发了一封邮件,一天后,我就收到了官方人员的微信好友邀请(因为我的微信写在邮件的footer)。

经过一番沟通后了解到,目前彩云翻译的 API 会默认移除换行符 & HTML 标签,因此,在开发时,暂时还需要自行对文本进行切割,提取其中的文本内容,按段进行翻译,解决这个问题。

不过,官方也在反馈,会评估提供翻译 HTML 文档的能力,期待一下吧。

202108292022971

orange pink keyboard

发布 NPM 包时,遭遇 You should bug the author to publish it (or use the name yourself!) 怎么办?

在发布一个 NPM 包时,我遭遇了这样的一个问题:

You should bug the author to publish it (or use the name yourself!)
Code language: PHP (php)

经过查询后发现,是因为我之前使用的 Login Token 失效了,在这种情况下,只需要重新执行npm adduser添加用户,即可解决问题。


我之前以为是 login 没用,要 adduser 才能使用,后来查询了一下 npm 的文档发现 login 是 adduser 的一个别名,二者功能是一样的,因此,不存在 login 的权限不如 adduser 的问题。

orange pink keyboard

如何控制发布到 NPM 中的文件?

如果你使用 Typescript 编写 npm 包,可能会发现自己编写的 ts 文件也被发布到了 NPM 上去。

一般来说,这个其实并没有什么,除非你的包并不开源,又或者你有精神洁癖,希望用户看到的包的文件目录是足够简单明了的。

这个时候,你可以借助 npm 中的 files 这个字段,来控制你需要上传的文件。

比如,如果你按照下面的方式配置 files 就可以控制你的包在发布时,只发布有限的文件,比如必须的 package.jsonLICENSEREADME 以及构建产物 dist 文件夹。

{
   "name":"your-package",
   "files":[
     "package.json",
     "README.md",
     "LICENSE",
     "dist"
   ]
}
Code language: JSON / JSON with Comments (json)
black and silver laptop computer beside yellow ceramic mug

PowerShell 禁止运行 node.js 脚本如何解决?

对于一些比较流程化的工作,我希望将其自动化,因此我写了一个脚本,帮助我来完成这个基本的工作。

但在写完后,发现了一个问题:

helper: 无法加载文件 C:\Users\bestony\AppData\Roaming\npm\helper.ps1,因为在此系统上禁止运行脚本。有关详
细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ helper
+ ~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
Code language: JavaScript (javascript)

这个问题倒是不复杂,是因为 PowerShell 相比于 CMD 拥有更全面的权限控制。如果想要解决的话,有两种方式:

1.换用 CMD

在目前的 Windows 中,依然是 CMD & PowerShell 双轨制,你可以直接使用 CMD 来执行你的命令,就无需关注这个权限的问题了。

2. 关闭权限

如果你需要继续使用 PowerShell,就要关闭 PowerShell 的校验,使用管理员模式打开 PowerShell,并执行如下命令,来关闭 PowerShell 的校验即可。

set-ExecutionPolicy RemoteSigned
Code language: JavaScript (javascript)
Open LED signage

如何为任何开源项目做贡献?

在《如何成为Golang贡献者》中,我介绍了, 我对于 Golang 的第一个贡献是修复了一处 Typo ,这是整个开源贡献中可以说是最简单的一部分。

那如果你现在是一个新人,希望参与到项目中,或希望走通整个贡献的流程,那么修复 typo 是一个不错的选择。但对于新人来说,通过阅读代码来查找 typo ,显然不是一个很好的选择。

在这种情况下,自然会产生一个问题:“有没有一种方式,可以让我快速找到 typo 呢?”

答案是肯定的,我们可以借助一些拼写检查工具,来检查具体哪些代码文件中存在 typo。

流程

这里我使用的是 Client9 的 Misspell ,一个基于 Golang 写就的拼写检查工具(用 golang 的拼写检查工具来检查 golang 源码,很合理)。

这个工具的下载安装十分简单,执行如下代码即可安装:

curl -L -o ./install-misspell.sh https://git.io/misspell
sh ./install-misspell.sh

Code language: JavaScript (javascript)

安装完成后,即可使用 misspell 命令来进行拼写的检查。以 django 项目为例,具体的执行命令如下:

git clone git@github.com:django/django.git
cd django
misspell ./*
Code language: PHP (php)

可以看到打印出了 misspell 认为可能是 typo 的地方,

202108252149852
结果

接下来你要做的就很简单了,根据 misspell 的结果,查找具体的文字,确保是否真的是 typo,如果是真的 typo,就按照项目的贡献规范进行贡献即可。

总结

借助 misspell,你可以很轻松的给一个项目快速的开始贡献代码,但如果真的是希望参与到开源社区当中,一定不能只是做 typo 的修复。typo 修复一般来说都是开源前辈留给后辈学习用的,对于实际的贡献者而言,除了熟悉流程,并没有太多的价值,因此,你还是需要将开源项目应用在自己的工作生活中,并解决一些实际的问题,才会更有价值。