写在最最前
由于cnpm已经不维护了,有很多问题都得不到解决,于是我又转向了verdaccio的怀抱。这是sinopia的一个分支,文档详细齐全,搭建方法简单粗暴,尤其是使用docker时,只需要两句命令行,就能搭建出一个稳定可靠的私库。
而且因为本公司的私密项目不是特别多,所以只在私库中存放公司项目,而不做镜像处理。
当然,如果还对cnpm有兴趣的话,可以继续往下看。
前言
cnpmjs.org: Private npm registry and web for Company
作为公司专用npm私库,优势有两点,除了可以同步npm库的资源,加快下载速度外,还可以上传私有项目到公司公用平台。
事实上,npm也可以上传私有项目的,但是每个月要交7$。
此次搭建私库的系统环境:
os: centos7.3
node: v 6.2.2
//虽然截止目前,官方稳定版是8.10.0,
//但是在搞私库的过程中仍是因为版本较高遇到了很多坑
npm: v 3.9.5
mariadb: v 5.5.56
IP: 10.21.21.192(本机地址)
git客户端
附带安装教程:
- Node安装教程
- mariadb安装教程
若是知道怎么安装,可忽略
.
安装步骤
- 下载cnpm并安装依赖
//下载cnpm
git clone git://github.com/cnpm/cnpmjs.org
//进入cnpm目录
cd cnpmjs.org
//安装相关依赖
npm install
2.创建数据库并导入数据表
//默认root用户是没有密码的,若是要创建新用户,可自行创建
mysql -uroot
//创建数据库
MariaDB> CREATE DATABASE cnpmjs;
MariaDB> use cnpmjs
//导入cnpm的数据
MariaDB> source docs/db.sql;
//查看是否导入成功
MariaDB > show tables;
若是导入成功,会出现如下数据
3.编辑cnpm项目的配置文件
//进入配置文件夹
cd config
//创建config.js文件并填入数据
vi ./config.js
//config.js:
module.exports = {
debug: false,
bindingHost: '10.21.21.192', // 设定只能用该IP访问
cnpm服务器
scopes: ['@sunrun'],//指定你的私有包的前缀,你发布的包必须以此开头
enableCluster: true, // enable cluster mode
sourceNpmRegistry: 'https://registry.npm.taobao.org',
database: {
db:'cnpmjs', // 数据库名
host: '192.168.8.200', // 你的数据库地址
port:3306, // 默认
username:'admin', // 默认
password:'sunrun', // 默认为空
dialect:'mysql' // 使用mysql,默认为sqlite,
},
enablePrivate:true, // 开启私有库
admins: {
admin: '[email protected]',
},
syncModel: 'none'
//默认有none ,exist,all,此处设置为none,即不同步npm源已有的库至本地,
//如果设置为exist,则会同步线上npm源存在的模块
//比如当你执行安装某线上模块时,则会把线上该模块版本全部同步至本地库
}
创建的config.js会覆盖默认的index.js
- 添加端口号
//打开registry的端口号
firewall-cmd --add-port=7001/tcp --zone=public --perment
//打开web默认的端口号
firewall-cmd --add-port=7002/tcp --zone=public --perment
//重置防火墙,使刚刚的配置生效
firewall-cmd --reload
5.启动cnpm服务器
//返回cnpmjs.org的目录下
cd ../
//启动服务器
node --harmony dispatch.js
执行后如下图
在浏览器上的访问http://10.21.21.192:7002可看到下图所示
6.添加管理员
请确保cnpm服务和mariadb服务都是运行中的,然后进行添加管理员
npm adduser --registry=http://10.21.21.192:7001
Username: admin
Password: (自己写)
Email: (this IS public) 必须为上面配置的邮箱,即[email protected]
添加成功后会出现Logged in as user on ...
的字样
.
客户端使用
搭建私库最常用的动作就是发包和下载
1.在本地建立一个项目,即 npm init
,按照提示一步步往下建立,最后得到的结果就是
{
"name": "test_publish",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "sunrun",
"license": "ISC"
}
创建index.js
function hello(name) {
console.log("Hello " + name);
}
exports.hello = hello;
2.登录cnpm
npm login
Username: admin
Password: (自己写)
Email: (this IS public) [email protected]
关于包的命令行
//发布包
npm publish --registry=http://10.21.21.192:7001
//更新包(需要更新版本号)
npm publish --registry=http://10.21.21.192:7001 packageName(可指定要更新的包名)
//取消发布
npm unpublish --registry=http://10.21.21.192:7001 packageName
//安装包
npm install --registry=http://10.21.21.192:7001 packageName@version --save
借鉴文章
http://blog.csdn.net/palalaking/article/details/50384775
https://www.jianshu.com/p/145a8d3cc6c5