不發佈到npm而直接使用github上的庫

最近用了一個開源項目的依賴,然後發現需求不太滿足,需要添加上一些自己的需求,於是在github上fork了項目後並做了一些改動。這時候問題來了,本來是項目中是通過npm install --save-dev xxx來引用的,如何替換爲自己改過後的版本?

解決思路:

方法一: 直接更換node_modules裏面對應的依賴源碼。

這種方法只能臨時性解決問題,當重新npm install一下,改動後的源碼將丟失,不能解決問題。

方法二: 去掉依賴,將源碼拷出來放到項目中保存。

對於所引用的npm依賴不是很複雜的時候,直接將別人的代碼拷到項目中變成項目的一部分,這種方法還是很推薦的,操作起來也簡單,複製粘貼就行。

方法三: 註冊npm賬號發佈自己的源。

這種做法相當於將別人的代碼拷過來,然後變成了一個自己的開源項目。雖然操作也不算複雜,也能解決問題,但個人感覺怪怪的,不推薦。

方法四: 直接引用github上的項目(本文重點)。

我也是第一次知道還可以有這樣的操作,在package.json中將對應的源改爲github上的項目地址,就可以替換掉原來的npm源,而github一般都比較穩定,直接引用也不會有很大問題(除非自己以後作死把項目刪掉了)。

舉個栗子:
我項目中引用了一個叫remember-scroll的項目,package.json如下:

{
  ...
  "dependencies": {
    "remember-scroll": "^0.1.0",
  },
  "devDependencies": {
    ...
  }
}

然後我在github項目上fork了原項目並做了一些改動,然後可以通過[email protected]:fengxianqi/remember-scroll.git這個地址把項目clone到本地。於是可以在package.json中替換爲github上的源,前綴上需要加上git+ssh//

{
  ...
  "dependencies": {
    "remember-scroll": "git+ssh://[email protected]:fengxianqi/remember-scroll.git",
  },
  "devDependencies": {
    ...
  }
}

最後重新npm install一下就可以了。

這裏有個建議,就是最好給自己改過的這個項目加一個tag,然後引用項目具體的tag,這是爲了防止以後你有對該github項目有了新的改動,不至於影響到業務。具體做法是在後面加上#tag,如:

{
  ...
  "dependencies": {
    "remember-scroll": "git+ssh://[email protected]:fengxianqi/remember-scroll.git#v0.1.1",
  },
  "devDependencies": {
    ...
  }
}

這種做法對一些不想發佈到npm中去的項目來說,比如公司內部項目,或者個人使用的小項目,是非常可行的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章