前提:多个项目都需要用到相同的组件,内网开发无法直接使用npm来共享资源。
在网上看了很多资料决定使用verdaccio来搭建一个内网的npm私服,具体操作步骤很简单,网上有很多教程也说的很详细,下面是一教程的些链接
https://juejin.cn/post/6844903840521650189
https://juejin.cn/post/6875502804618706952
虽然搭建过程很简单,但是要想应用到项目中我遇到了很多问题:
1.npm源代理问题
虽然内网直接修改了 npm的源为本地localhost,但是verdaccio里面有一个代理配置,如果在本地服务器没有找到 会继续去npm源查找资源,这样内网环境下会直接报错。我是直接把config.yaml文件中的代理给注释掉了,简单粗暴的解决了问题
2.发布问题
发布的时候注意,版本不能相同
3.包安装问题
当我在项目中安装我发布的包的时候(npm
install test-module
--save),控制台一直会报错找不到要安装的依赖,明明我是安装的我发布的指定的包,里面没有任何依赖,就是一段简单简单的console。结果发现当我们在npm
install的时候无论你是不是只是安装指定的包,都会根据package.json 和 package-lock.json
检查项目中已经存在的node_modules里面依赖。因为我正在开发的项目是两年前搭建的 然后一直在内网开发
每次安装新的插件都是只将新安装的那个包拷贝进来了,里面可能有其他的依赖没有被一起拷贝进来导致的。
解决上述问题:
1.把项目中的package.json文件放到外网 重新npm install一次,然后将新的node_modules拷贝进内网项目中
2.同样将package.json
拷贝到外网重新npm install ,需要先切换npm源地址到本地也就是外网使用verdaccio搭建的npm私服环境。只有这样,在npm
install的时候会将包缓存到本地npm环境,一般在C:/用户/User/AppData/Roaming/verdaccio/storage目录中,然后将storage目录拷贝到内网环境同样目录中
,这样在项目中只需要npm install 就可以了
写的不太好,可能会有错别字或不太清楚,请包容
网友评论