nodejs搭建CNPM本地库管理
来源:互联网 发布:java orm 编辑:程序博客网 时间:2024/06/15 17:59
前言
随着Nodejs开发的项目越来越多,Node项目管理就成了一个需要思考的问题了。如果所有项目都开源统一用 NPM 进行管理也没什么问题,但总有一些是我们不希望的完全开放的代码,作为企业是核心秘密保留在公司内部,这个时候就需要在公司内网也搭建一套 NPM 依赖管理系统。CNPM正好就提供了这个功能。从Github上CNPM的主页看,CNPM由国内Alibaba团队开发维护。
1. CNPM是什么?
CNPM 是一个Nodejs的库,致力于打造私有的 NPM 注册服务。当然,除了私有库功能以外,CNPM官网 (http://cnpmjs.org/)还提供了NPM同步的服务。CNPM官方发布的架构图:
从CNPM的架构图中,我们可以看出CNPM是对NPM做的镜像服务,CNPM会定期同步NPM的资源库,同时CNPM支持发布私有的库,这样就非常方便地集成了公有库和私有库,对于公司内部的开发者来说,基本感觉不到两种库的区别。
另外,我们使用NPM下载依赖包时,经常性地会遇到一些包下载失败的情况,主要原因了NPM的注册服务器在国外,国内的网络环境访问国外的IP并不是太好。所以,直接配置到国内的NPM镜像,可以减少NPM下载出错机会。
比如,最近发生的NPM下载时的“No compatibleversion found”错误,如果不想升级NPM的环境,那么你还选择用CNPM去进行依赖管理
2. 搭建CNPM的服务器
从官方文档中,我们看到CNPM服务器环境,只需要Node(0.11.12)+ MySQL(>= 0.5.0),另外我们还需要Linux的环境,接下来就让我们动手自己搭建一个私有NPM的服务器。
我的系统环境:
- Linux: centOS 6.6
- Node: v4.2.2
- MySQL: 5.6.11 MySQL Community Server (GPL)
- IP: 192.168.8.200
2.1 下载CNPM项目源代码并安装依赖包
通过github下载CNPM项目源代码
git clone git://github.com/cnpm/cnpmjs.org
进入项目目录
cd cnpmjs.org
安装依赖包之前,先要升级NPM的版本
命令如下:
npm install -g npm
执行命令安装依赖包
npm install
缺少依赖包的报错如下图:
2.2 创建数据库并导入项目数据表
命令如下:
mysql -uyixiang -p cnpmjs < docs/db.sql
执行命令之前,你应该确保你的mysql数据库已安装,且已创建名为 cnpmjs的数据库
2.3 修改cnpm项目的配置文件
进入cnpmjs.org目录中的config目录并创建文件 config.js 如下图:
编辑 config.js 添加配置
module.exports = {
debug: false,
bindingHost: '192.168.8.200', // 设定只能用该IP访问cnpm服务器
scopes: ['@yixiang'],//指定你的私有包的前缀,你发布的包必须以此开头
enableCluster: true, // enable cluster mode
sourceNpmRegistry: 'https://registry.npm.taobao.org',
database: {
db:'cnpmjs', // 数据库名
host: '192.168.8.200', // 你的数据库地址
port:3306, // 默认
username:'yixiang', // 默认
password:'123456', // 默认为空
dialect:'mysql' // 使用mysql,默认为sqlite,
},
enablePrivate:true, // 开启私有库
admins: {
admin: 'ezen@qq.com',
},
syncModel: 'none'//默认有none ,exist,all,此处设置为none,即不同步npm源已有的库至本地,如果设置为exist,则会同步线上npm源存在的模块,比如,当你执行安装某线上模块时,则会把线上该模块版本全部同步至本地库
}
该配置会覆盖index.js的配置
2.4 添加端口及启动cnpm服务端
Vim /etc/sysconfig/iptables
如下图:
启动cnpm服务器
命令如下:
node --harmony dispatch.js
执行后如下图
2.5 添加cnpm管理员用户
添加cnpm管理员用户用于发布私有包,因为cnpm必须是admin用户才能进行publish
命令如下:
在cnpm服务器192.168.8.200中添加名为admin密码为admin邮箱为ezen@qq.com
npm adduser --registry=http://192.168.8.200:7001
Username: admin
Password: admin
Email: (this IS public) 必须为上面配置的邮箱,即ezen@qq.com
如下图:
3. cnpm客户端使用
3.1 包的发布
本地包的配置package.json
{
"name": "@yixiang/one",
"version": "1.0.0",
"main": "./testone.js",
"description": "A Common Module",
"author": "ezen"
}
testone.js 文件内容
/*
* 公共模块
*/
function hello(name) {
console.log("Hello " + name);
}
exports.hello = hello;
首先登录到cnpm服务器端,如下命令
npm login --registry=http://192.168.8.200:7001
如下图:
打开本地的包文件所在目录,执行如下命令:
npm publish --registry=http://192.168.8.200:7001
3.2 包的取消发布
npm unpublish --registry=http://192.168.8.200:7001 包名@版本
如下图,取消名为 @yixiang/testone 的包的发布
3.3 包的安装
命令
npm install --registry=http://192.168.8.200:7001包名@版本
例子:
npm install --registry=http://192.168.8.200:7001@yixiang/one@1.0.0
- nodejs搭建CNPM本地库管理
- 搭建本地nodeJs服务器
- linux安装nodejs、cnpm、pm2
- CNPM私有服务器搭建
- nodejs搭建本地服务器并访问文件
- 利用nodeJs anywhere搭建本地服务器环境
- 使用CNPM搭建企业内部私有的NPM库
- 使用CNPM搭建企业内部私有的NPM库
- Nodejs NPM CNPM优雅安装install
- nodejs与npm更新、cnpm的安装
- nodejs、npm、cnpm、bower in windows
- Windows10环境下安装Nodejs、cnpm
- 本地搭建管理后台系统
- cnpm
- CNPM
- cnpm
- cnpm
- 简单搭建nodeJS服务,访问本地站点文件
- 设计模式(二十二)---享元模式
- 欢迎使用CSDN-markdown编辑器
- Maximo 密码加密传送
- NSFileHandle处理文件
- java操作mysql中文乱码解决
- nodejs搭建CNPM本地库管理
- Android监测程序压入后台及从后台返回
- android 之控件篇
- 面向对象的思想
- /bin/bash: prebuilts/misc/linux-x86/bison/bison: No such file or directory
- matlab 实践程序8——将指定的图像移动到另一个文件夹
- OC基础语法
- iOS8 定位问题
- jquery获取当前点击对象