使用cnpm搭建企业内部私有NPM仓库
2015-05-18 10:31
851 查看
cnpm是企业内部搭建npm镜像和私有npm仓库的开源方案。它同时解决了现有npm架构的一些问题。
确保npm服务快速、稳定:对于企业来说,上线生产系统的时候,需要花半小时甚至更久等待npm模块依赖安装完毕,是不可接受的。部署镜像后,可以确保高速、稳定的npm服务。
发布私有模块:官方的npm上的模块全部是开源的。一些与企业业务逻辑相关的模块可能不适合开源。这部分私有的模块放在私有NPM仓库中,使用起来各种方便。
控制npm模块质量和安全:npm上的模块质量参差不齐,搭建私有仓库,可以更严格地控制模块的质量和安全,只有经过审核的模块才允许被加入私有仓库。
使用MySQL替换了CouchDB,更容易部署。同时由于大部分开发者更熟悉MySQL,因此架设起来更方便。
CDN和MySQL都可以方便地扩展。
MySQL
Redis
qiniu CND (或其他CDN)
创建MySQL表
然后编写配置文件
安装依赖
启动
好了,部署完成!
首先安装cnpm客户端:
在自己的脚本的启动文件(例如
注意用自己的仓库信息替换上面命令的相关部分。
之后就可以用
注意,目前cnpm的权限控制比较简单,只有
为什么企业需要私有NPM
主要有如下理由:确保npm服务快速、稳定:对于企业来说,上线生产系统的时候,需要花半小时甚至更久等待npm模块依赖安装完毕,是不可接受的。部署镜像后,可以确保高速、稳定的npm服务。
发布私有模块:官方的npm上的模块全部是开源的。一些与企业业务逻辑相关的模块可能不适合开源。这部分私有的模块放在私有NPM仓库中,使用起来各种方便。
控制npm模块质量和安全:npm上的模块质量参差不齐,搭建私有仓库,可以更严格地控制模块的质量和安全,只有经过审核的模块才允许被加入私有仓库。
cnpm的特点
压缩包等文件从数据库中分离,放在CDN上,减轻了数据库的压力,提高了访问速度。使用MySQL替换了CouchDB,更容易部署。同时由于大部分开发者更熟悉MySQL,因此架设起来更方便。
CDN和MySQL都可以方便地扩展。
5分钟部署
部署cnpm只需5分钟。依赖
NodeMySQL
Redis
qiniu CND (或其他CDN)
部署过程
获取代码git clone git://github.com/fengmk2/cnpmjs.org.git $HOME/cnpmjs.org cd $HOME/cnpmjs.org
创建MySQL表
; mysql -u yourname -p mysql> use cnpmjs; mysql> source docs/db.sql
然后编写配置文件
config/config.js:
module.exports = { debug: false, enableCluster: true, // enable cluster mode mysqlServers: [ { host: 'localhost', port: 3306, user: 'cnpmjs', password: 'cnpmjs123', } ], mysqlDatabase: 'cnpmjstest', redis: { host: 'localhost', port: 6379, }, nfs: null, //use your own CND here enablePrivate: true, // enable private mode, only admin can publish, other use just can sync package from source npm admins: { admin: 'admin@cnpmjs.org', }, syncModel: 'exist' };
安装依赖
make install
启动
; npm run start Starting cnpmjs.org ... Start nodejs success. PID=27175
好了,部署完成!
客户端设置
服务跑起来之后,企业员工需要在自己的电脑上配置下客户端。首先安装cnpm客户端:
npm install -g cnpm
在自己的脚本的启动文件(例如
.zshrc或
.bashrc)中添加别名:
echo "#lnpm alias\nalias lnpm='cnpm --registry=http://localhost:7001\ --registryweb=http://localhost:7002\ --cache=$HOME/.npm/.cache/lnpm\ --userconfig=$HOME/.lnpmrc'" >> $HOME/.zshrc && source $HOME/.zshrc
注意用自己的仓库信息替换上面命令的相关部分。
之后就可以用
lnpm命令访问企业的内部NPM了,各种接口和NPM一样。
注意,目前cnpm的权限控制比较简单,只有
admin用户有权
publishNPM模块。如果你的企业需要灵活的权限控制,需要自行开发。
相关文章推荐
- 使用cnpm搭建企业内部私有NPM仓库
- 使用cnpm搭建私有NPM仓库 发布npm包
- 使用CNPM搭建企业内部私有的NPM库
- 使用CNPM搭建企业内部私有的NPM库
- 【转】使用CNPM搭建私有NPM
- 使用Sinopia搭建私有npm仓库不能下载带有@符号的包
- 使用Sinopia搭建私有npm仓库
- 使用 satis 搭建一个私有的 Composer 包仓库 在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需
- 使用新浪云存储搭建Docker私有仓库服务
- 使用Rancher和私有仓库快速搭建Kubernetes集群
- 使用Nexus2搭建企业maven仓库(三)
- 使用新浪云存储搭建Docker私有仓库服务
- 使用sinopia 搭建私有npm服务器的教程
- Jenkins 持续集成平台构建之使用nexus搭建maven私有仓库
- 使用 harbor 搭建 docker 私有镜像仓库
- npm私有仓库搭建
- centos使用nexus搭建私有maven仓库
- Maven 仓库使用与私有仓库搭建
- 搭建企业内部yum仓库(centos6+centos7+epel源)
- 使用Gitorious搭建私有代码仓库