首先拉取gitlab上的cnpm.org项目,并安装依赖
git clone https://github.com/cnpm/cnpmjs.org.git
接着需要修改配置文件(非docker部署),进入项目,找到config文件下的index.js
vi ./config/index.js
主要设置以下属性
// 是否允许所有人发布,true表示只有管理员才能发布,false表示任何人,但项目也必须带有符合条件的前缀
enablePrivate: false,
// 只允许带有以下前缀的包才能被支持操作
scopes: [ '@dark', '@app' ]
// 设置我们服务器的地址,端口保持原有的7001
registryHost: '118.89.19.172:7001',
注释以下配置,不然只能127.0.0.1本地访问
// bindingHost: '127.0.0.1', // only binding on 127.0.0.1 for local access
// 管理员帐号,key值表示用户名和密码,value值是邮箱,可以设置添加自己的
admins: {
fengmk2: 'fengmk2@gmail.com',
admin: 'admin@outlook.com',
dead_horse: 'dead_horse@qq.com',
}
然后就可以通过node dispatch.js的方式启动了,api使用的是7001端口,也就是我们发布绑定的地址,web访问的页面是7002端口
然后我们可以通过ip:7002访问到cnpm私服的页面
然后我们可以通过以下命令,改变npm配置
npm config set registry http://服务器ip:7001/
然后npm login登录,可以登录admin下配置的管理员,也可以通过npm adduser添加用户
登录成功后,就可以npm publish发布包了。包的name命名必须符合scopes下的前缀
发布不上去403的话,可能就是enablePrivate设置了false,只有管理员才能进行操作
移除包也是,涉及到403,就需要登录管理员帐号
npm unpublish 项目名 --force
将docs下的db.sql文件写入自定义的数据库中
CREATE DATABASE cnpm;
USE cnpm;
//路径根据自己的调整
SOURSE /home/cnpmjs.org/docs/db.sql;