2020年3月16日,GitHub 收购 npm,大概内容如下:
Nat Friedman 宣布 GitHub 已签署收购 npm 的协议,并表示 npm 加入 GitHub 后会继续免费提供 public registry 服务。交易完成后,GitHub 的工作重点包括:未来会将 npm 集成至 GitHub 以提升开源软件供应链的安全性,并让用户能够跟踪从 GitHub PR 到修复问题的 npm 软件包版本的更改。
情况不妙
本来是件好事,但我最近写了个新模块,npm publish
的时候发现居然是发到了 GitHub 的 Packages 下。
虽然也没啥问题,只是我们安装的时候会从 GitHub 安装,慢一点而已,我安装了下,大概10秒可以安装好,问题不大。
然后我让我同事试了下,他却死活安装不上,还显示 404
这就蛋疼了,为什么我可以安装,他那却不行呢。
我也不想去研究 npm,就想先发到 npm 上,因为国情问题,我们都用淘宝镜像,所以目前稳妥的方法就是发到 npm 上。
谷歌了下,没找到答案,突然想起了个模块 np
,这是个规范化模块发布流程的工具,我试了下,成功发到 npm 上了。
但我不想每次都这么操作一遍,就想一键发到 npm,于是简单跟踪调试了下 npm 发布过程。
简单描述下就是 npm 默认配置是 registry: 'https://registry.npmjs.org'
,然后会读取 package.json 中的 publishConfig 配置,如果没有就替换为 GitHub 的 registry 地址。
那么事情就简单了。
添加发布配置
在 package.json 中加入如下配置
1 | "publishConfig": { |
如果你是发布到组织的,那么使用如下配置
1 | "publishConfig": { |
其中 @52cik
是我的组织,例如 vue 组织就是 @vue,自行更改即可。access
是发布为公共模块,因为 npm 之前改版,所以需要加个公共模块配置。
接着 npm publish
即可,然后安装模块试试,看看有没有走淘宝镜像,如果没有,等淘宝10分钟同步一次后再试。
小结
这只是暂时解决方案,以后技术发展什么样还不确定,所以请根据自己的时间,合理使用即可。
我们前都依赖淘宝镜像,所以发布到 npm 上才是目前最优解,如果以后 GitHub 速度跟淘宝镜像一样了,那还折腾啥,对不?