使用cnpm搭建企业内部私有NPM仓库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: cnpm是企业内部搭建npm镜像和私有npm仓库的开源方案。它同时解决了现有npm架构的一些问题。

cnpm

cnpm是企业内部搭建npm镜像和私有npm仓库的开源方案。它同时解决了现有npm架构的一些问题


为什么企业需要私有NPM

主要有如下理由:

  • 确保npm服务快速、稳定:对于企业来说,上线生产系统的时候,需要花半小时甚至更久等待npm模块依赖安装完毕,是不可接受的。部署镜像后,可以确保高速、稳定的npm服务。
  • 发布私有模块:官方的npm上的模块全部是开源的。一些与企业业务逻辑相关的模块可能不适合开源。这部分私有的模块放在私有NPM仓库中,使用起来各种方便。
  • 控制npm模块质量和安全:npm上的模块质量参差不齐,搭建私有仓库,可以更严格地控制模块的质量和安全,只有经过审核的模块才允许被加入私有仓库。


cnpm的特点

  • 压缩包等文件从数据库中分离,放在CDN上,减轻了数据库的压力,提高了访问速度。
  • 使用MySQL替换了CouchDB,更容易部署。同时由于大部分开发者更熟悉MySQL,因此架设起来更方便。
  • CDN和MySQL都可以方便地扩展。

image.png

5分钟部署

部署cnpm只需5分钟。


依赖

  • Node
  • MySQL
  • 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, //enableclustermode

   mysqlServers: [

     {

       host:'localhost',

       port:3306,

       user:'cnpmjs',

       password:'cnpmjs123',

     }

   ],

   mysqlDatabase:'cnpmjstest',

   redis: {

     host:'localhost',

     port:6379,

   },

   nfs:null, //useyourownCNDhere

   enablePrivate:true, //enableprivatemode, onlyadmincanpublish, otherusejustcansyncpackagefromsourcenpm

   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模块。如果你的企业需要灵活的权限控制,需要自行开发。


参考


本文由SegmentFault根据 NodeParty 2013 上 @dead-horse 的分享整理

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
JavaScript 前端开发
🚀自定义属于你的脚手架并发布到NPM仓库
🚀自定义属于你的脚手架并发布到NPM仓库
|
1月前
|
JavaScript 前端开发
实现自动扫描工作区npm包并同步cnpm
前言 在开发一个多npm包的项目时,时常会一次更新多个包的代码,再批量发布到 npm 镜像源后。 由于国内网络环境的原因,大部分都会使用淘宝的镜像源进行依赖安装,为了确保发布后,通过淘宝源能够顺利的安装,通常会手动同步一下 cnpm sync vue react 但在一些大型的 monorepo 的多包工程里,手动输入包名是一件非常繁琐的事情,所以准备把输入的过程简化一下,改成自动扫描工作区的包名,然后自动同步。 进而有了这个工具 工具的使用 直接通过 npx 运行即可,将自动扫描所有的包
|
1月前
|
资源调度 开发者
npm,registry,镜像源,npm切换源,yarn,cnpm,taobao,nrs
我们在使用 node 的 npm 下载依赖的时候,往往下载速度很慢,那是因为 npm 默认的是 npm 处于国外的官方镜像源。所以需要切换到国内的镜像源来加速依赖下载。所以本文推荐一款简单好用 npm 镜像源管理器,可以方便开发者管理自己的镜像源。
245 1
|
7月前
|
缓存 资源调度 JavaScript
从零到一nvm、npm、cnpm、yarn、vue全套安装和环境配置以及创建新项目和如何运行人家的项目大全,最详细,保姆级
从零到一nvm、npm、cnpm、yarn、vue全套安装和环境配置以及创建新项目和如何运行人家的项目大全,最详细,保姆级
285 0
|
7月前
使用Sinopia部署私有npm仓库
使用Sinopia部署私有npm仓库
92 0
|
7月前
npm安装淘宝镜像cnpm报错:npm ERR! Windows_NT 10.0.19045
npm安装淘宝镜像cnpm报错:npm ERR! Windows_NT 10.0.19045
236 0
|
8月前
|
关系型数据库 MySQL 开发工具
|
9月前
|
存储 缓存 资源调度
[Node] Node.js 包管理工具详解npm yarn cnpm npx pnpm
[Node] Node.js 包管理工具详解npm yarn cnpm npx pnpm
|
11月前
|
存储 缓存 资源调度
npm、cnpm、yarn和pnpm,我们应该选择哪个包管理工具?
在前端开发中,包管理工具是必不可少的工具之一。目前,市面上有多种包管理工具可供选择,如 `npm`、`cnpm`、`yarn` 和 `pnpm` 等。这些工具都具有自己的优点和缺点,选择适合自己的工具可以提高开发效率和代码质量。 本文将对这些工具的特点、优缺点和使用方法进行详细介绍,从而选择最适合自己的包管理工具。
720 0
npm、cnpm、yarn和pnpm,我们应该选择哪个包管理工具?
|
10月前
|
缓存 资源调度 JavaScript
【React工作记录八十九】npm,cnpm,yarn简单对比笔记
【React工作记录八十九】npm,cnpm,yarn简单对比笔记
61 0

推荐镜像

更多