把依赖包安装改成自己的git仓库

1,067 阅读5分钟

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!

前言(问题描述)

今天团队新接了个项目,框架是已有的,那就正常走流程 :

  • 1.克隆项目代码 git clone ***.git
  • 2.切换成对应的node版本,然后yarn安装依赖 nvm use ***;yarn install;
  • 3.然后运行(跑)项目 yarn run ***;
  • 4.最后可以修改代码或者业务开发

image.png 想象中是如此美好,现实很残酷。

image.png

分析一下:在第二步的时候安装依赖失败,网络下载该依赖失败,然后看了一下这个依赖是属于需要特定的内网才能安装,而我又没有该vpn,所以是安装不成功的。想起这个ui在之前别的项目是已经有该依赖包的,所以立马想到解决方案:

解决方案一:手动导入依赖包

配置中去掉该依赖,然后安装其它可安装的依赖,再从别的地方copy依赖到现在这个项目的node_modules(依赖包)中,这个操作没毛病,按理也能成功。

但是如此操作出现了一个坑,依赖A中包含依赖B,而依赖B因为相同的原因安装失败,然后这样,操作就会产生新的报错。

image.png

下面这张图是依赖包A的安装:

image.png

从这发现依赖包B的安装失败。

image.png

当然这个也是可以解决的,在依赖A中进行相同类似的操作,(没有出现连环依赖嵌套的话)就能操作成功,然后再把这个依赖包copy到node_modules(依赖包),在这样一顿操作下,成功的安装完依赖,并成功运行起了项目。

不过如此操作有个很大缺点就是团队其它人也这样安装依赖的话,烦都烦死了,哪有心情继续开发。所以我们考虑更佳的方案。

依赖配置的几种配置规则:

在说方案二前,先说说依赖配置的几种规则,本文重点:

1.依赖包名称:VERSION

这是最常见的依赖配置,VERSION是一个遵循SemVer规范的版本号配置,npm install 时将到npm服务器下载符合指定版本范围的包。 比如:安装特定版本号的vue 最新版本的vue-bus等等

"vue": "2.5.17",
"vue-bus": "^1.2.1",

2.依赖包名称:DWONLOAD_URL

包名称后面放上包的下载地址,DWONLOAD_URL 是一个可下载的tarball压缩包地址,模块安装时会将这个.tar下载并安装到本地。比如:

"test2-js": "http://cdn.com/test2-js.tar.gz",

3.依赖包名称:LOCAL_PATH

LOCAL_PATH 是一个本地的依赖包路径,例如 file:../pacakges/pkgName。适用于你在本地测试一个npm包,不应该将这种方法应用于线上。

 "@yh/icons-svg": "file:./lib/icons-svg-4.0.1.tgz",

4.依赖包名称:GITHUB_URL

GITHUB_URL 即 github 的 username/modulename 的写法,例如:ant-design/ant-design,你还可以在后面指定 tag 和 commit id。比如:

"antd": "ant-design/ant-design#4.0.0-alpha.8",

5.依赖包名称:GIT_URL

GIT_URL 即我们平时clone代码库的 git url,也就是我第二个方案中使用的git ***.git,比如:

    "@yh/icons-svg": "git+http://10.16.0.137:8086/wb/icons-svg.git",

上面这个是我内网的仓库,会连接失败的,如果你非要试试:

 "vue-count-to": "git+https://gitee.com/wangxiaoer520/vue-count-to.git",

依赖配置规则说到这,我们就可以继续说说我的第二个解决方案了

方案二:git下载安装依赖包

有些人看到这也许会问,为什么不把依赖包拿去发布,这个和这个项目约束有关,虽然是一个基于ant-design简单封装的组件库,但是属于公司的,明确要求不能发布到外网,只能存在于内网平台(开源精神呢,我也不知道)。

image.png

所以接着说第二个方案:

新建项目并上传依赖包

在自己仓库新建项目: image.png 在已有的依赖包中初始化

git init

在依赖包中增加仓库源地址

git remote add origin ***.git

上传并提交

git add .;
git commit -m '提交信息';
git push -u origin master;

然后这个依赖包就可以在配置中使用用:

依赖包名称:GIT_URL

修改原来项目的配置文件:

image.png 这张图是依赖A,刚刚知道了依赖A中的依赖B(@yh/icons-svg)是会安装失败的,我在内网代码管理平台新建了个项目icons-svg用来管理依赖B,然后把A中的文件依赖配置改成对应的 git ***.git image.png 前提是icons-svg依赖中没有依赖C是需要内网安装的,我这已经验证过! 然后在内网代码管理平台再新建个项目来管理依赖A(@hsa/hsa-ui)

image.png

image.png

然后再把代码上传,告之同事,可以直接连上公司内网成功下载依赖,而不会出现依赖安装失败的情况。

image.png PS:怎么在仓库新建项目和上传依赖包,这个我就不写了吧!

总结:

其实我做的操作只是把依赖包换到一个同事和我都能接触下载的地方,而不是原来的源地址,也许没什么技术含量,不过是个搬运工。

image.png

如果你有更好的解决方案,欢迎评论告诉楼主,小弟虚心请教。

!十分感谢你认真的看完

不妨点个赞,鼓励一下楼主,谢谢!

image.png

题外话

flag:我想升个级拿奖励

image.png

image.png