npm 模組釋出到 npm

admin發表於2020-06-15

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 中加入如下配置

[XML] 純文字檢視 複製程式碼
"publishConfig": {
  "registry": "https://registry.npmjs.org",
  "access": "public"
},

如果你是釋出到組織的,那麼使用如下配置

[XML] 純文字檢視 複製程式碼
"publishConfig": {
  "@52cik:registry": "https://registry.npmjs.org",
  "access": "public"
},

其中 @52cik 是我的組織,例如 vue 組織就是 @vue,自行更改即可。

access 是釋出為公共模組,因為 npm 之前改版,所以需要加個公共模組配置。

接著 npm publish 即可,然後安裝模組試試,看看有沒有走淘寶映象,如果沒有,等淘寶10分鐘同步一次後再試。

小結

這只是暫時解決方案,以後技術發展什麼樣還不確定,所以請根據自己的時間,合理使用即可。

我們前都依賴淘寶映象,所以釋出到 npm 上才是目前最優解,如果以後 GitHub 速度跟淘寶映象一樣了,那還折騰啥,對不?

相關文章