想搭建一个属于公司内部的 npm 镜像?这边文章或许能帮到你!
- 公司开发环境与外网隔绝,需要搭建内网npm源
- 确保npm服务快速、稳定,提高下载速度
- 不是搭建 npm 私服,而是镜像源
npmjs.org将自己的项目挂在github.com/npm/npm-reg…。老项目项目地址为:https://github.com/isaacs/npmjs.org
现已失效。需要制作镜像的同学可以按照说明来制作镜像,首先你需要安装CouchDB 1.4.0或更新的版本。
由于文档较少及项目更新导致操作流程不一致,在实践中出现一些坑,只能亲自填坑。
一、安装CouchDB
使用 YUM 安装,推荐阅读 CouchDB安装以及使用这篇文章,下面列举几个重要的步骤。
[root@VM_0_9_centos ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
1、安装rpm仓库
修改/etc/yum.repos.d/bintray-apache-couchdb-rpm.repo,命令如下:
vim /etc/yum.repos.d/bintray-apache-couchdb-rpm.repo 添加如下内容,保存并退出:
[bintray--apache-couchdb-rpm]
name=bintray--apache-couchdb-rpm
baseurl=http://apache.bintray.com/couchdb-rpm/el$releasever/$basearch/
gpgcheck=0
repo_gpgcheck=0
enabled=1
2、修改default.ini
由于couchdb
默认是监听本地的请求,因此你需要配置它,让它可以接受来自局域网内的请求,将配置中的[httpd]
段端口和地址前面的分号注释去掉,将127.0.0.1
改成0.0.0.0
然后重启服务即可。
port = 5984 // 默认端口号,可修改
bind_address = 0.0.0.0 //把127.0.0.1修改为0.0.0.0
启动成功后访问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
。
[couch_httpd_auth]
public_fields = appdotnet, avatar, avatarMedium, avatarLarge, date, email, fields, freenode, fullname, github, homepage, name, roles, twitter, type, _id, _rev
users_db_public = true
[httpd]
secure_rewrites = false
[couchdb]
delayed_commits = false
最后就是复制整个项目啦,并且执行相应的脚本。用户名和密码不是必须,但最好是创建用户名和密码,否则脚本可能运行出错。
Clone the repository if you haven't already, and cd into it:
git clone git://github.com/npm/npm-registry-couchapp
cd npm-registry-couchapp
npm install
npm start \
--npm-registry-couchapp:couch=http://admin:password@localhost:5984/registry
npm run load \
--npm-registry-couchapp:couch=http://admin:password@localhost:5984/registry
npm run copy \
--npm-registry-couchapp:couch=http://admin:password@localhost:5984/registry
会遇到问题的地方上面都过了一遍,在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的结果,不要着急。
参考文章: