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

最近用了一個開源項目的依賴,而後發現需求不太知足,須要添加上一些本身的需求,因而在github上fork了項目後並作了一些改動。這時候問題來了,原本是項目中是經過npm install --save-dev xxx來引用的,如何替換爲本身改事後的版本?node

解決思路:

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

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

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

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

方法三: 註冊npm帳號發佈本身的源。

這種作法至關於將別人的代碼拷過來,而後變成了一個本身的開源項目。雖然操做也不算複雜,也能解決問題,但我的感受怪怪的,不推薦。npm

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

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

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

{
  ...
  "dependencies": {
    "remember-scroll": "^0.1.0",
  },
  "devDependencies": {
    ...
  }
}
複製代碼

而後我在github項目上fork了原項目並作了一些改動,而後能夠經過git@github.com:fengxianqi/remember-scroll.git這個地址把項目clone到本地。因而能夠在package.json中替換爲github上的源,前綴上須要加上git+ssh//ssh

{
  ...
  "dependencies": {
    "remember-scroll": "git+ssh://git@github.com:fengxianqi/remember-scroll.git",
  },
  "devDependencies": {
    ...
  }
}
複製代碼

最後從新npm install一下就能夠了。spa

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

{
  ...
  "dependencies": {
    "remember-scroll": "git+ssh://git@github.com:fengxianqi/remember-scroll.git#v0.1.1",
  },
  "devDependencies": {
    ...
  }
}
複製代碼

這種作法對一些不想發佈到npm中去的項目來講,好比公司內部項目,或者我的使用的小項目,是很是可行的。ci

相關文章
相關標籤/搜索