CNPM搭建私有的NPM服务

来源:互联网 发布:mac文件不想放在桌面 编辑:程序博客网 时间:2024/05/06 23:03

CNPM搭建私有的NPM服务

  1. 前 言
    随着Nodejs开发的项目越来越多,Node项目管理就成了一个需要思考的问题了。如果所有项目都开源统一用 NPM 进行管理也没什么问题,但总有一些是我们不希望的完全开放的代码,作为企业是核心秘密保留在公司内部,这个时候就需要在公司内网也搭建一套 NPM 依赖管理系统。
    CNPM正好就提供了这个功能。从Github上CNPM的主页看,CNPM由国内Alibaba团队开发维护。
  2. 目 录
    CNPM是什么?
    搭建CNPM的服务器
    设置私有注册库的三种方法
    CNPM的客户端使用
  3. CNPM是什么?
    CNPM 是一个Nodejs的库,致力于打造私有的 NPM 注册服务。当然,除了私有库功能以外,CNPM官网 (http://cnpmjs.org/) 还提供了NPM同步的服务。
    CNPM官方发布的架构图:

从CNPM的架构图中,我们可以看出CNPM是对NPM做的镜像服务,CNPM会定期同步NPM的资源库,同时CNPM支持发布私有的库,这样就非常方便地集成了公有库和私有库,对于公司内部的开发者来说,基本感觉不到两种库的区别。
另外,我们使用NPM下载依赖包时,经常性地会遇到一些包下载失败的情况,主要原因了NPM的注册服务器在国外,国内的网络环境访问国外的IP并不是太好。所以,直接配置到国内的NPM镜像,可以减少NPM下载出错机会。
比如,最近发生的NPM下载时的“No compatible version found”错误,如果不想升级NPM的环境,那么你还选择用CNPM去进行依赖管理,关于错误的详细介绍,请参考文章 NPM下载出错 No compatible version found
2. 搭建CNPM的服务器
从官方文档中,我们看到CNPM服务器环境,只需要Node(0.11.12) + MySQL(>= 0.5.0),另外我们还需要Linux的环境,接下来就让我们动手自己搭建一个私有NPM的服务器。
我的系统环境:
• Linux: 3.10.0-229.11.1.el7.x86_64 UTC 2015 ,GNU/Linux
• Node: v6.9.0
• Npm: v4.4.1
• MySql: v15.1
• IP:192.168.0.187
以下操作在192.168.0.4远程linux下操作
通过github下载项目源代码

下载项目,进入目录

~ git clone https://github.com/cnpm/cnpmjs.org.git
~ cd cnpmjs.org
在我们开始安装依赖包之前,在项目目录下升级NPM
~ npm install npm -g
安装项目依赖
~ npm install

创建MySQL数据库,我本地的MySQL用户名为root,密码是byu10010

#进入myssql
~ mysql -u root -p byu10010 (提示输入密码)

进入mysql后,检测原来是否含有cnpmjs_test数据库

DROP DATABASE IF EXISTS cnpmjs_test;

创建数据库

CREATE DATABASE cnpmjs_test;

需要数据库源,sql语句文件在项目里如下,执行sql语句

>docs/db.sql

查看该数据库下刚刚创建的表格

show tables;

成功执行后看到如下,创建成功

+———————–+
| Tables_in_cnpmjs_test |
+———————–+
| dist_dir |
| dist_file |
| download_total |
| module |
| module_deps |
| module_keyword |
| module_log |
| module_maintainer |
| module_star |
| module_unpublished |
| tag |
| total |
| user |
+———————–+

接下来修改配置文件,很重要

~vi ./config/index.js
database: {
db: ‘cnpmjs_test’,
username: ‘root’,
password: ‘byu10010’,
………
}
dialect: ‘sqlite’,

启动CNPM服务器(默认会打开两个端口,7001用于NPM的注册服务,7002用于Web访问)

~ node dispatch.js

OK,回到本机
通过浏览器打开:http://192.168.0.4:7002

在搜索框中搜索ape-algorithm,得到如下结果:

点击SYNC,进入如下界面,等待加载完成:

进入本机项目文件,这里是nj-nova为例,查看配置列表
$ npm config list
; cli configs
metrics-registry = “https://registry.npmjs.org/

scope = “”
user-agent = “npm/4.4.1 node/v6.2.0 win32 x64”

; userconfig C:\Users\byu-5.npmrc
registry = “https://registry.npmjs.org/

; builtin config undefined
prefix = “C:\Users\byu-5\AppData\Roaming\npm”

; node bin location = C:\Program Files\nodejs\node.exe
; cwd = C:\nj-nova
; HOME = C:\Users\byu-5
; “npm config ls -l” to show all defaults.

registry属性是指向NPM的官司位置https://registry.npmjs.org/,我们可以通过npm config set registry命令来修改这个配置。

~ npm config set registry http://192.168.0.4:7001/

再次执行npm config list 查看上面的红色字体部分是否修改

设置完成,以后在本机执行npm install 都是从内网192.168.0.4上拉取npm

0 0
原创粉丝点击