使用cnpm搭建私有npm服务
公司项目开发中,需要使用私有的组件库,为了方便管理需要搭建一个私有npm服务。以下就是使用cnpm搭建npm服务的过程。
环境依赖
- Linux
- Node >= 0.12.2, use –harmony
- NPM >= 2.7.6
- PostgreSQL >= 9.4
下载cnpm
$ git clone git://github.com/cnpm/cnpmjs.org.git $HOME/cnpmjs.org
$ cd $HOME/cnpmjs.org
修改个性化配置
$ vim config/config.js
module.exports = {
bindingHost: '127.0.0.1', //本地ip
/**
* database 配置
*/
database: {
db: 'cnpmjs', //db名
username: 'yourname', // 用户名
password: 'yourpw', // 用户密码
dialect: 'postgres',
host: '127.0.0.1', // db host
pool: {
maxConnections: 10,
minConnections: 0,
maxIdleTime: 30000
},
logging: !!process.env.SQL_DEBUG,
},
// 修改registryHost,默认是r.cnpmjs.org,不设置的话,cnpm install 会到r.cnpmjs.org中install包
registryHost: '127.0.0.1:7001',
// 注册 scopes,自定义
scopes: ['@yourScope']
};
如果在运行的时候修改config,记得重启npm服务
安装cnpm依赖
$ npm install
启动PostgreSQL并创建数据库
- 创建PostgreSQL工作目录,并赋予权限。
$ mkdir -p /usr/local/var/postgres
- 初始化数据库文件。
$ initdb /usr/local/var/postgres/data
- 创建log目录。
$ mkdir -p /usr/local/var/log/postgres
- 指定日志输出并启动。
$ pg_ctl start -D /usr/local/var/postgres/data -l /usr/local/var/log/postgres/log.log
- 创建数据库
$ createdb mydbname -O username -E UTF8
创建名为 mydbname 的数据库,并指定username 为改数据库的拥有者,数据库的编码(encoding)是 UTF8。
关闭PostgreSQL 方法如下
$ pg_ctl -D /usr/local/var/postgres stop -s -m fast
初始化数据库
$ node --harmony models/init_script.js
报错 connect ECONNREFUSED 127.0.0.1:5432 ,表示数据库没有启动
报错SequelizeConnectionError: database “cnpmjs” does not exist 表示没有创建cnpmjs库
启动服务
$ node run start
关闭服务进程
$ ps -ef | grep node
$ kill -9 pid
使用cnpm
登陆http://127.0.0.1:7002/有cnpm 使用方法
下载私有包
在发布了私有包后,就可以下载私有库
- 使用cnpm 下载
$ cnpm install --save-dev @yourScope/package
Error: GET http://r.cnpmjs.org … 404 status 需要修改在config/config.js修改registryHost
- 使用npm下载
npm install @yourScope/package --registry=http://127.0.0.1:7001
配置npm registry
$ npm config set registry http://127.0.0.1:7001
这一步可以省略,只是为了方便下载的时候不用指定私有库地址。