美文网首页
在linux上搭建npm私库

在linux上搭建npm私库

作者: 詹小云 | 来源:发表于2018-03-14 19:30 被阅读0次

    写在最最前

    由于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客户端 
    

    附带安装教程:

    .

    安装步骤


    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;
    

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


    表数据

    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: 'zxy@gz.sunrun.com',
        },
        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
    
    执行后如下图 效果图1 在浏览器上的访问http://10.21.21.192:7002可看到下图所示 效果图2

    6.添加管理员
    请确保cnpm服务和mariadb服务都是运行中的,然后进行添加管理员

    npm adduser --registry=http://10.21.21.192:7001
    Username: admin
    Password: (自己写)
    Email: (this IS public) 必须为上面配置的邮箱,即zxy@gz.sunrun.com
    

    添加成功后会出现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) zxy@gz.sunrun.com
    

    关于包的命令行

    //发布包
    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私库

          本文链接:https://www.haomeiwen.com/subject/rcdzfftx.html