不发布到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了原项目并做了一些改动,然后可以通过git@github.com:fengxianqi/remember-scroll.git
这个地址把项目clone到本地。于是可以在package.json中替换为github上的源,前缀上需要加上git+ssh//
{
...
"dependencies": {
"remember-scroll": "git+ssh://git@github.com:fengxianqi/remember-scroll.git",
},
"devDependencies": {
...
}
}
最后重新npm install
一下就可以了。
这里有个建议,就是最好给自己改过的这个项目加一个tag,然后引用项目具体的tag,这是为了防止以后你有对该github项目有了新的改动,不至于影响到业务。具体做法是在后面加上#tag
,如:
{
...
"dependencies": {
"remember-scroll": "git+ssh://git@github.com:fengxianqi/remember-scroll.git#v0.1.1",
},
"devDependencies": {
...
}
}
这种做法对一些不想发布到npm中去的项目来说,比如公司内部项目,或者个人使用的小项目,是非常可行的。