CNPM搭建私有的NPM服务
发布于 5 年前 作者 bsspirit 18725 次浏览 最后一次编辑是 3 年前 来自 分享

CNPM搭建私有的NPM服务

前言:

随着Nodejs开发的项目越来越多,Node项目管理就成了一个需要思考的问题了。如果所有项目都开源统一用 NPM 进行管理也没什么问题,但总有一些是我们不希望的完全开放的代码,作为企业是核心秘密保留在公司内部,这个时候就需要在公司内网也搭建一套 NPM 依赖管理系统。

CNPM正好就提供了这个功能。从Github上CNPM的主页看,CNPM由国内Alibaba团队开发维护。

文章目录:

  1. CNPM是什么?
  2. 搭建CNPM的服务器
  3. 设置私有注册库的三种方法
  4. CNPM的客户端使用

请查看博客文章

http://blog.fens.me/nodejs-cnpm-npm/

10 回复

@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 感谢回复

  1. 等有时间我也去试一下npm-registry-couchapp项目
  2. CNPM在开发文档中,强调了因为couchDB不熟悉所以改用MySQL的存储,这点我也同意。比如,我熟悉的DB包括MySQL, Redis, Mongo, Cassandra, HBase, LevelDB,又要再学CouchDB就有点没动力了。
  3. 私有库,在内部我就不设权限了。
  4. CNPM的功能,其实有一些还不是很完善,比如通过网页同步时,页面切换会断的问题。期待作者的改进。
  5. 另外,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,后来发现能开源给更多人用就直接做了。

回到顶部