使用cnpm搭建私有npm服务

公司项目开发中,需要使用私有的组件库,为了方便管理需要搭建一个私有npm服务。以下就是使用cnpm搭建npm服务的过程。

环境依赖

下载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并创建数据库

  1. 创建PostgreSQL工作目录,并赋予权限。
    $ mkdir -p /usr/local/var/postgres
    
  2. 初始化数据库文件。
    $ initdb /usr/local/var/postgres/data
    
  3. 创建log目录。
    $ mkdir -p /usr/local/var/log/postgres
    
  4. 指定日志输出并启动。
    $ pg_ctl start -D /usr/local/var/postgres/data -l /usr/local/var/log/postgres/log.log
    
  5. 创建数据库
    $ 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 使用方法

下载私有包

在发布了私有包后,就可以下载私有库

  1. 使用cnpm 下载
$ cnpm install --save-dev @yourScope/package

Error: GET http://r.cnpmjs.org … 404 status 需要修改在config/config.js修改registryHost

  1. 使用npm下载
npm install @yourScope/package --registry=http://127.0.0.1:7001

配置npm registry

$ npm config set registry http://127.0.0.1:7001

这一步可以省略,只是为了方便下载的时候不用指定私有库地址。

目录