一、 为什么需要搭建npm私有服务
- 如果公司处于隐私保护的需要,不想讲自己封的包推到npm社区,但又急需要一套完整的包管理工具来管理越来越多的组件,模块,项目。对于前端,最熟悉的莫过于npm,npm是前端包管理的不二选择
- 使用 NPM 装包的时候下载速度慢如龟速,所以解决办法是使用cnpm淘宝镜像来装包加速,但有比淘宝更快的方法是从局域网的私服下。
- 我们想在下载的时候,私有的包用公司内部的服务器,公共的包走公共仓库
二、 常用搭建私有 NPM 服务方式
- Sinopia
Verdaccio
目前Sinopia已经在2015年10月后停止了丢 sinopia 的维护和升级,所以我推荐使用verdaccio来搭建npm私有服务
搭建过程
1. 安装node环境
|
|
linux详细安装node教程点击
2. 安装verdaccio
使用npm或者cnpm安装,需要权限在npm 前面加sudo
基本使用
一旦安装后,您只需要执行命令:
|
|
可以使用pm2来管理进程,安装好pm2之后:
# 启动
sudo pm2 start verdaccio
# 关闭
pm2 stop verdaccio
修改verdaccio配置
//执行如下命令修改配置,可以修改镜像源
由于 verdaccio 默认使用的是npm官方的源,你可以改成淘宝的源
他的配置文件在 /home/.config/verdaccio/config.yaml
其中有个 uplinks 字段
uplinks:
npmjs:
url: https://registry.npmjs.org/
将 url 改为 https://registry.npm.taobao.org/ 即可
开发中如何使用
本地开发中修改npm镜像源
npm set registry http://localhost:4873/
你也可以在下载的时候带上参数 –registry
npm install --registry http://localhost:4873
方便起见,可以在项目目录下新建 .npmrc 文件,写入如下内容:
registry=http://localhost:4873
然后项目安装的包就会先从你自己的npm下载,如果找不到就会找官方npm源
注意:http://localhost:4873指示本地运行的,部署在服务器的时候使用ip或者域名即可
如何发布包
发布自己的包可以在网上找到很多资料,这里就不讲述了。
构建完自己的包之后,发布到私有服务中,一下命令
# 注册用户
npm adduser –registry http://localhost:4873
#查看当前用户,是否是注册用户.
npm who am i
# 发布
npm push