搭建 NPM 私有服务搭建入坑记

前两天刚写完如何基于 CNPM 搭建一个私有服务,然后搭建到了线上正式服务器上,结果今天就栽坑里了。具体坑如下。

一、服务器磁盘空间被爆满

笔者搭建了两私有服务,一套在测试机器,一套在线上机器,然而自己比较犯傻的一步就是,在测试机器上的 cnpm 配置与线上机器的 cnpm 配置不太一样~,然而问题就出现在了这不太一样的配置上。

  • 罪魁祸首:syncModel
    我们看一下 cnpm 中 config 配置文件对此属性的简介:
    在这里插入图片描述
    我们看到该属性值一共有三种选择。
    1、none:不同步任何模块,代理所有公共模块从 sourceNpmRegistry 获取。
    2、exist:只会同步已存在的模块(理解能力差,懵逼中~)
    3、all:同步所有的模块
    简单的从这三个属性值的翻译上来说,似乎除了最后一个 all 的属性值比较易懂,其它的并不能理解的太明白(一个理科生,确实对这种语言文学理解能力差一点 /(ㄒoㄒ)/~~)。
    我在线上机器上配置的该属性值为 exist,然后结果就导致线上服务器磁盘爆满,影响到了服务器上的其他服务~
    针对此属性值我们来看一下他实现的方式,path: sync/sync_exist.js
    在这里插入图片描述
    ok, 从这几行代码里面我们清楚地看到,使用 exist 的属性,第一次会从官方的注册表同步所有的包!也就是说,当你在服务器上搭好私有服务之后,他会慢慢的同步官方注册表所有的包到你私有服务器的注册表中,显然,这就会增加你服务器上的硬盘存储,这就是最终会导致服务器硬盘爆满,所以我们这一个属性默认就好了。默认为 none(不会同步官方的注册表中的包,私有服务器上的包只有自己上传的)。

二、可以发包,但是安装不了

这个坑还不算是一个大坑,起码这个问题在测试服务器上就已经发现了

前两天开开森森的搭建好私有服务之后,就告诉同事了,然后让同事进行测试一下。然后发包 -> 装包… 诶?发现安装不上去,一开始还在想,我电脑没问题呀,然后回到自己电脑上再次进行安装同事发布的那个包,安装失败?,真尴尬~
找一下原因所在吧,发现安装的是有,域名是我这台服务器上的域名。然后配置文件中默认是的:registryHost: r.cnpmjs.org
怪不得发包的时候能够发布,但是安装的时候安装不了,这个是可配置的属性,将这个属性值改为你的服务器 IP 地址就可以了,记得要加 registry 的端口号(默认为 7001)

三、简单的将页面改装成自己想要的页面样子

不得不说,搭建好的本身页面都是英文的,还有一张大图片看着都不舒服,就是想把它给干掉

直接修改 docs/web/readme.md 文件。看里面有什么不想要的,直接删,想改成中文,直接改。改成自己想要的页面简介就 ok 了。

Ending,thx…

发布了11 篇原创文章 · 获赞 22 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_19238139/article/details/86523376