前言:
随着Nodejs开发的项目越来越多,Node项目管理就成了一个需要思考的问题了。如果所有项目都开源统一用 NPM 进行管理也没什么问题,但总有一些是我们不希望的完全开放的代码,作为企业是核心秘密保留在公司内部,这个时候就需要在公司内网也搭建一套 NPM 依赖管理系统。
CNPM正好就提供了这个功能。从Github上CNPM的主页看,CNPM由国内Alibaba团队开发维护。
文章目录:
- CNPM是什么?
- 搭建CNPM的服务器
- 设置私有注册库的三种方法
- CNPM的客户端使用
请查看博客文章
赞!
@dead-horse 原来是框架的作者!非常不错的应用。
哈哈,圈子好小啊
赞!!! 文章写得够详细的, 收录到wiki了
@suqian 嘿嘿,好的
前段时间搭建过私有库,考察过CNPM以及官方的npm-registry-couchapp,最后发现其实官方的库就可以很好的解决私有库中的问题。npm config set always-auth true
就可以让npm客户端总是上送用户名密码,再配合Npm-session
,基本上后台认证就很好做了(只需写一个couchDB的plugin)。并且,npm团队一直在积极更新npm/npm-registry-couchapp,同时使用成熟的文档数据库couchDB来解决软件仓库的版本管理/增量同步/分布式拓展等问题。这样看起来,CNPM的优势似乎非常有限。。
@lujb 感谢回复
- 等有时间我也去试一下npm-registry-couchapp项目
- CNPM在开发文档中,强调了因为couchDB不熟悉所以改用MySQL的存储,这点我也同意。比如,我熟悉的DB包括MySQL, Redis, Mongo, Cassandra, HBase, LevelDB,又要再学CouchDB就有点没动力了。
- 私有库,在内部我就不设权限了。
- CNPM的功能,其实有一些还不是很完善,比如通过网页同步时,页面切换会断的问题。期待作者的改进。
- 另外,CNPM可以避免NPM强制升级的问题,不知道npm-registry-couchapp是不是完全基于NPM命令操作,能不能回避这个问题?
@bsspirit npm-registry-couchapp其实只是一些http请求的handler,并存放在CouchDB中,当npm请求过来,是由CouchDB做的路由分发给这些handler执行(CouchDB自带mozjs)。所以,任何npm操作(http请求)你都可以做任何拦截处理。可以看到软件仓库的大部分问题,其实是使用CouchDB来解决的。话说楼主懂这个多高大上的数据库,佩服佩服!
@lujb 我去了解一下,多谢!
couchdb的方案我们实施了一年半,期间经不起断网容灾测试,因为我们没法保证couchdb本身的双master是如何做到的,而且dba也不熟悉。
cnpm一开始的出发点为了内部npm,后来发现能开源给更多人用就直接做了。