最近用了一個開源項目的依賴,而後發現需求不太知足,須要添加上一些本身的需求,因而在github上fork了項目後並作了一些改動。這時候問題來了,原本是項目中是經過
npm install --save-dev xxx
來引用的,如何替換爲本身改事後的版本?node
這種方法只能臨時性解決問題,當從新npm install一下,改動後的源碼將丟失,不能解決問題。git
對於所引用的npm依賴不是很複雜的時候,直接將別人的代碼拷到項目中變成項目的一部分,這種方法仍是很推薦的,操做起來也簡單,複製粘貼就行。github
這種作法至關於將別人的代碼拷過來,而後變成了一個本身的開源項目。雖然操做也不算複雜,也能解決問題,但我的感受怪怪的,不推薦。npm
我也是第一次知道還能夠有這樣的操做,在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