需求 公司出于自身隐私保护需要,不想把自己的代码开源到包管理区,但是又急需一套完整包管工具,来管理越来越多的组件、模块和项目。对于前端,最熟悉的莫过于npm,bower等;但是bower的市场兼容性明显没有npm强壮,加之commonjs规范的日益成熟。npm应该是前端包管理的不二选择。 公司对于搭建本地私有npm库有如下要求: 私有包托管在内部服务器中 项目中使用了公共仓库上的公共包,也使用了内部服务器上的私有包 希望下载的时候,公共包走公共仓库,私有包走内部服务器的私有仓库 服务器硬盘有限,希望只缓存下载过的包,而不是全部同步。 对于下载,发布npm包有对应的权限管理,安装方便,配置简单,依赖少。 关于sinopia? Sinopia 是一个零配置的私有的带缓存功能的npm包管理工具,作者是是rlidwka,一个大神,也是一只猫~ 往社区内贡献过很多代码,包括 jshttp, markdown-it 等等,也是 Node.js 核心代码库的活跃贡献者。 使用sinopia,你不用安装CouchDB或MYSQL之类的数据库,Sinopia有自己的迷你数据库,如果要下载的包不存在,它将自动去你配置的npm地址上去下载,而且硬盘中只缓存你现在过的包,以节省空间。 为什么选择sinopia sinopia有以下几个优势值得关注: 不同步拉取npm库,占据大量硬盘,没有硬盘被撑爆的问题; 安装配置极其简单,不需要数据库; 支持配置上游registry配置,一次拉取即缓存; 支持forever及pm2守护进程管理; 其他方法 使用 git+ssh 这种方式直接引用到 GitHub 项目地址 嗯,这种方式可行,也最简单,但真真的太烂了,姑且不说不能使用 semver,关键还是 url 太丑,如果是强迫症真的没法忍~ 使用cnpm 暂且不论 cnpm 只是作为镜像使用,其实这个方案缺点就挺多的,用的人多,速度不一定快,缓存,关键是不支持发布包以及登陆、注册,再加上配置过于复杂。而且,还需要安装数据库。 npm on-site 土豪啊,我还能说什么呢。。。但是问题是,npm在国内访问慢,还是不是的无法访问,花钱也买不到好的服务,何必呢。…