16boke - 一路博客

使用CNPM搭建企业内部私有的NPM库

1、cnpm概述

cnpm是企业内部搭建npm镜像和私有npm仓库的开源方案。它同时解决了现有npm架构的一些问题。

2、为什么企业需要私有NPM

确保npm服务快速、稳定:对于企业来说,上线生产系统的时候,需要花半小时甚至更久等待npm模块依赖安装完毕,是不可接受的。部署镜像后,可以确保高速、稳定的npm服务。

发布私有模块:官方的npm上的模块全部是开源的。一些与企业业务逻辑相关的模块可能不适合开源。这部分私有的模块放在私有NPM仓库中,使用起来各种方便。

控制npm模块质量和安全:npm上的模块质量参差不齐,搭建私有仓库,可以更严格地控制模块的质量和安全,只有经过审核的模块才允许被加入私有仓库。

3、cnpm的特点

压缩包等文件从数据库中分离,放在CDN上,减轻了数据库的压力,提高了访问速度。

使用MySQL替换了CouchDB,更容易部署。同时由于大部分开发者更熟悉MySQL,因此架设起来更方便。

CDN和MySQL都可以方便地扩展。

73830a323777507e5452fcea6e104cba_articlex.png

4、部署cnpm

  • 获取代码

git clone git://github.com/fengmk2/cnpmjs.org.git
  • 创建mysql库

create database cnpmjs;
use cnpmjs;
source docs/db.sql【db.sql位于cnpmjs.org/docs/db.sql】
  • 修改配置

vim /cnpmjs.org/config/index.js

QQ截图20160602133647.png

cnpm提供两个端口:7001和7002,其中7001用于NPM的注册服务,7002用于Web访问。

bindingHost为安装cnpm的服务器ip地址,也就是在浏览器中只能通过访问http://192.168.48.57来访问cnpm以及获取npm的注册服务。

QQ截图20160602133952.png

按照之前创建的数据库来进行配置

4、安装依赖

进入/cnpmjs.org,执行make install

如果安装过程中报错,可能需要升级node和npm,目前我安装成功的环境为:

[root@centos6 config]# node -v
v4.3.0
[root@centos6 config]# npm -v
2.14.12

大家可以升级到我这个版本来安装

5、启动服务

node --harmony_generators dispatch.js
或者
nohup node --harmony_generators dispatch.js &
或者
node dispatch.js
或者
nohup node dispatch.js &

如果启动过程中报这个错:

[root@centos6 config]# node --harmony_generators dispatch.js
node: bad option: --harmony_generators

说明node版本不支持--harmony_generators选项,可以换成“node dispatch.js”或者“nohup node dispatch.js &”来启动。

其中nohup为在后台启动。

6、测试是否启动成功

在浏览器中输入:http://192.168.48.57:7002/,如果出现:

QQ截图20160602134656.png

则说明安装启动成功。

7、同步

先修改config/index.js配置文件:

QQ截图20160603181902.png

将syncModel由none改为exist。

打开浏览器访问 http://192.168.48.57:7002/,搜索任何一个包名,点击'SYNC' 链接,同步开始。

屏幕快照 2016-02-09 23.41.36.png

同步过程中可以看到包的数量会逐渐增加:

QQ截图20160603182133.png

同步成功:

屏幕快照 2016-02-09 23.45.11.png

下一章我会介绍如何在企业中使用cnpm。

npm  cnpm  Node.js