在linux上搭建npm私库

写在最最前

由于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安装教程
    若是知道怎么安装,可忽略

.

安装步骤


  1. 下载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;

若是导入成功,会出现如下数据


在linux上搭建npm私库_第1张图片
表数据

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

  1. 添加端口号
//打开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

执行后如下图
在linux上搭建npm私库_第2张图片
效果图1

在浏览器上的访问http://10.21.21.192:7002可看到下图所示
在linux上搭建npm私库_第3张图片
效果图2

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

你可能感兴趣的:(在linux上搭建npm私库)