最近的Node项目中因为数据模型等问题,需要有一个对各个模块进行统一的管理,如果把私有的模型publish到公共的npm不太合适,所以决定使用cnpm搭建一个私有的npm,同时也可以对项目常用的npm模块做一个缓存,加快部署速度。

搭建的过程还是比较简单,参考cnpm的Deploy很快搭建起来,给大家分享一下。

服务器环境:

  • Ubuntu Server 14.04
  • Node.js v0.12.0
  • MySQL 5.5

因为cnpm使用了--harmony参数,所以需要Node版本大于0.11.12,所以就直接上了最新的v0.12.0,没有MySQL也没关系,可以直接使用sqlite3。

Clone源码并导入SQL

(MySQL用户名:root 密码:root,数据库名:cnpm,项目和数据放在~/cnpm)


# clone from github
$ git clone git://github.com/cnpm/cnpmjs.org.git $HOME/cnpm
$ cd $HOME/cnpmjs # create mysql tables
$ mysql -uroot -proot -e 'DROP DATABASE IF EXISTS cnpmjs;'
$ mysql -uroot -proot
mysql> use cnpmjs;
mysql> source docs/db.sql

创建并编辑config.js

$ vim config/config.js
 module.exports = {
debug: false,
scopes: ['@superid'],
enableCluster: true, // enable cluster mode
mysqlServers: [
{
host: 'localhost',
port: 3306,
user: 'root',
password: 'root',
}
],
mysqlDatabase: 'cnpm',
enablePrivate: true, // enable private mode
admins: {
admin: 'yourtion@gmail.com',
},
syncModel: 'exist'// 'none', 'all', 'exist'
};

安装依赖并启动运行

$ make install

$ npm run start

检查运行

#open registry and web
# registry
$ curl http://localhost:7001
# web
$ curl http://localhost:7002

看到7001返回json数据,而7002返回HTML源代码就是运行成功。

客户端设置

首先安装cnpm,并设置~/.cnpmrc

$ sudo npm install -g cnpm

$ vim  ~/.cnpmrc

设置registry=http://127.0.0.1:7001(127.0.0.1改为你的服务器ip)

这样就可以正常的publish私有模块以及使用cnpm的缓存服务了。

有几个需要注意的点:

  1. 因为需要创建私有仓库并且保证有权限才能publish模块,所以config.jsenablePrivate必须设为true;
  2. 为了保证私有的库不与公开npm冲突,config.js中需要设置scopes数组为你的公司名或者项目代号,publish的模块名为@superid/myModel

原文链接:https://blog.yourtion.com/cnpm-private-npm.html

【转】使用CNPM搭建私有NPM的更多相关文章

  1. 使用cnpm搭建私有NPM仓库 发布npm包

    关于如何使用cnpm搭建私有的npm仓库看这里→ http://blog.fens.me/nodejs-cnpm-npm/ 我本人还没有机会真正实践操作过,公司的npm仓库是我老大搭建的,我这里仅仅记 ...

  2. NodeJS学习:搭建私有NPM

    工具 verdaccio nrm pm2 特点 verdaccio 的特点: 不同步拉取npm库,占据大量硬盘,没有硬盘被撑爆的问题: 安装配置极其简单,不需要数据库: 支持配置上游registry配 ...

  3. 使用Sinopia搭建私有npm仓库

    使用Sinopia搭建私有npm仓库 在用npm装包的时候,每次都要下载一大堆,慢且不说,npm还老被墙,所以就想到在公司内部搭建npm仓库镜像.大概看了几个,觉得Sinopia最简单也好用,所以就使 ...

  4. 搭建私有npm私库(使用verdaccio)

    搭建 npm 离线服务器 为什么要搭建npm 服务器 原因: 公司内部开发的私有包,统一管理,方便开发和使用 安全性,由于公司内部开发的模块和一些内容并不希望其他无关人员能够看到,但是又希望内部能方便 ...

  5. 利用Sinopia搭建私有npm包

    1.安装sinopia包 npm install -g sinopia 如果是Windows系统用上面的方式安装sinopia很有可能报错,推荐使用下面方式安装: npm install sinopi ...

  6. 【玩转树莓派】使用 sinopia 搭建私有 npm 服务器

    简介 使用 sinopia 的好处是,node系的工程师,内部协作时,使用自有 npm 包,会非常方便:另外,sinopia,会缓存已经下载过的包,可以在相当程度上,加速 npm install 相关 ...

  7. 搭建前端私有npm杂记

    随着前端队伍越来越壮大,项目间共享代码就变得尤为重要.常用的框架/类库没必要在每个项目都放一份,团队内部产出的公共模块也需要有合理的共享机制.现在,用npm管理前端代码已经是业界趋势.楼主尝试用私有n ...

  8. 私有 npm 仓库的搭建

    cnpm 是企业内部搭建 npm 镜像和私有 npm 仓库的开源方案,当企业业务逻辑相关的模块可能不适合开源.这部分私有的模块就可以放在私有 npm 仓库中来管理和维护. 以下为搭建私有 npm 的详 ...

  9. 私有npm计划

    为什么要建立私有npm 提高代码复用程度,增加团队沉淀 剥离项目依赖,工程更加轻量 引用全量更新,支持版本降级 建立模块文档,降低上手难度 全员把关代码质量,无需重复测试 构建工具已成趋势,优化发布流 ...

随机推荐

  1. canvas 将html绘制图片 生成图片链接

    废话不多说,直接上代码 其中图片地址换成你的,自己玩儿去吧 <!DOCTYPE html> <html> <head> <meta charset=" ...

  2. layui sleect获取value值

    <div class="layui-form-item"> <label for="username" class="layui-f ...

  3. 学习新框架laravel4 第三天

    请求与输入 获取请求参数 如果没有传递默认值位1 $id= Input::get('id',1); //获取所有请求内容 Input::all() 取得请求 URI $uri = Request::p ...

  4. 智能家居系统 Home Assistant 系列 --安装系统之Windows

    Home Assistant 是一个成熟完整的基于 Python 的智能家居系统. 首先得安装Python环境.在浏览器中访问Python官网 www.python.org 进入Downloads中的 ...

  5. Python中常见的字典dict处理

    #字典的赋值d = [{"dasda": 123, "gsgsg": 3344}, {"dasdz": 123, "gsksg&q ...

  6. 网络相关知识点:nginx相关概念

    今天我们来介绍一下反向代理以及负载均衡相关内容: 反向代理: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求, 然后将请求转发给内部网络上的服务器,并将从 ...

  7. 注册COM组件cmd(管理员权限)

    比如,注册这个很老版本的office组件 C:\Windows\system32>regsvr32 d:\dsoframer.ocx

  8. java 编码二进制写法、十六进制用源代码表示

    二进制: int a = 0b10; a其实=2 八进制: int a = 01; a其实=8 十六进制: int a = 0x1; a其实=16

  9. jQuery实现“回到顶部”按钮功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Linux命令应用大词典-第26章 模块和内核管理

    26.1 lsmod:显示内核中模块的状态 26.2 get_module:查看内核模块详细信息 26.3 modinfo:显示内核模块信息