想搭建一个属于公司内部的 npm 镜像?这边文章或许能帮到你!
- 公司开发环境与外网隔绝,需要搭建内网npm源
- 确保npm服务快速、稳定,提高下载速度
- 不是搭建 npm 私服,而是镜像源
npmjs.org将自己的项目挂在https://github.com/npm/npm-registry-couchapp。原项目项目地址为:https://github.com/isaacs/npmjs.org
。需要制作镜像的同学可以按照说明来制作镜像,首先你需要安装CouchDB 1.4.0或更新的版本。
由于文档较少及项目更新导致操作流程不一致,在实践中出现一些坑,只能亲自填坑。
一、安装CouchDB
使用 YUM 安装,推荐阅读 CouchDB安装以及使用这篇文章,下面列举几个重要的步骤。
1 | [root@VM_0_9_centos ~]# cat /etc/redhat-release |
1、安装rpm仓库
修改/etc/yum.repos.d/bintray-apache-couchdb-rpm.repo,命令如下:
vim /etc/yum.repos.d/bintray-apache-couchdb-rpm.repo
添加如下内容,保存并退出:
1 | [bintray--apache-couchdb-rpm] |
2、修改default.ini
由于couchdb
默认是监听本地的请求,因此你需要配置它,让它可以接受来自局域网内的请求,将配置中的[httpd]
段端口和地址前面的分号注释去掉,将127.0.0.1
改成0.0.0.0
然后重启服务即可。
安装完成之后,启动和停止的命令如下:
$ sudo systemctl start couchdb
$ sudo systemctl stop couchdb
1 | port = 5984 // 默认端口号,可修改 |
启动成功后访问http://localhost:5984/会出现如下图所示:
进入数据库配置页面http://localhost:5984/_utils/#
二、下载couchapp
下面就是couchapp的使用说明了,简单翻译下。
You need CouchDB version 1.4.0 or higher. 1.5.0 or higher is best.
你需要CouchDB 1.4.0 以上的版本,yum 会默认安装最新版本,我目前安装的是 2.3.1。Once you have CouchDB installed, create a new database:
curl -X PUT http://localhost:5984/registry
使用这个命令创建名为registry
数据库,也可以直接在页面上配置。You’ll need the following entries added in your local.ini
然后把这一段内容放进local.ini
,我的路径为/opt/couchdb/etc
。
1 | [couch_httpd_auth] |
最后就是复制整个项目啦,并且执行相应的脚本。用户名和密码不是必须,但最好是创建用户名和密码,否则脚本可能运行出错。
Clone the repository if you haven’t already, and cd into it:
1 | git clone git://github.com/npm/npm-registry-couchapp |


会遇到问题的地方上面都过了一遍,在couchdb的web管理界面http://localhost:5984/_utils/#/replication进行同步操作,记得勾选连续Continuous
而不是一次性One time
,让脚本不停的跑,由于数据量大,同步镜像需要很长时间。
三、测试使用镜像
说明文档里提到三种方式,我们直接使用全局配置把registry地址改成我们内网的即可,然后就可以跟平常一样使用npm安装模块,你会发现安装模块时请求的是内网镜像地址了。
npm config set registry http://localhost:5984/registry/_design/app/_rewrite
然后测试一下看看:npm search node
Bingo!
文章中提到的localhost地址记得改成你自己实际的ip地址,在镜像完成同步之前,若你使用npm命令测试安装可能看到404的结果,不要着急。
参考文章: