• 【转】使用CNPM搭建私有NPM


    最近的Node项目中因为数据模型等问题,需要有一个对各个模块进行统一的管理,如果把私有的模型publish到公共的npm不太合适,所以决定使用cnpm搭建一个私有的npm,同时也可以对项目常用的npm模块做一个缓存,加快部署速度。

    搭建的过程还是比较简单,参考cnpm的Deploy很快搭建起来,给大家分享一下。

    服务器环境:

    • Ubuntu Server 14.04
    • Node.js v0.12.0
    • MySQL 5.5

    因为cnpm使用了--harmony参数,所以需要Node版本大于0.11.12,所以就直接上了最新的v0.12.0,没有MySQL也没关系,可以直接使用sqlite3。

    Clone源码并导入SQL

    (MySQL用户名:root 密码:root,数据库名:cnpm,项目和数据放在~/cnpm)

    
    # clone from github
    $ git clone git://github.com/cnpm/cnpmjs.org.git $HOME/cnpm
    $ cd $HOME/cnpmjs
    
    # create mysql tables
    $ mysql -uroot -proot -e 'DROP DATABASE IF EXISTS cnpmjs;'
    $ mysql -uroot -proot
    mysql> use cnpmjs;
    mysql> source docs/db.sql
    

    创建并编辑config.js

    $ vim config/config.js
    
     module.exports = {
        debug: false,
        scopes: ['@superid'],
        enableCluster: true, // enable cluster mode
        mysqlServers: [
          {
            host: 'localhost',
            port: 3306,
            user: 'root',
            password: 'root',
          }
        ],
        mysqlDatabase: 'cnpm',
        enablePrivate: true, // enable private mode
        admins: {
          admin: 'yourtion@gmail.com',
        },
        syncModel: 'exist'// 'none', 'all', 'exist'
      };  
    

    安装依赖并启动运行

    $ make install
    
    $ npm run start
    

    检查运行

    #open registry and web
    # registry
    $ curl http://localhost:7001
    # web
    $ curl http://localhost:7002
    

    看到7001返回json数据,而7002返回HTML源代码就是运行成功。

    客户端设置

    首先安装cnpm,并设置~/.cnpmrc

    $ sudo npm install -g cnpm
    
    $ vim  ~/.cnpmrc
    

    设置registry=http://127.0.0.1:7001(127.0.0.1改为你的服务器ip)

    这样就可以正常的publish私有模块以及使用cnpm的缓存服务了。

    有几个需要注意的点:

    1. 因为需要创建私有仓库并且保证有权限才能publish模块,所以config.jsenablePrivate必须设为true;
    2. 为了保证私有的库不与公开npm冲突,config.js中需要设置scopes数组为你的公司名或者项目代号,publish的模块名为@superid/myModel

    原文链接:https://blog.yourtion.com/cnpm-private-npm.html

  • 相关阅读:
    have you declared this activity in your AndroidManifest.xml?
    Android收回输入法的实现
    Android手机Home键重写
    Android屏幕点击事件重写
    拖动ListView列表时背景变黑
    AFNetworking vs ASIHTTPRequest vs MKNetworkKit
    libgif.so
    android.support.v4.widget.DrawerLayout
    Titanium vs PhoneGap
    Non-constant Fields in Case Labels
  • 原文地址:https://www.cnblogs.com/liubei/p/cnpm.html
Copyright © 2020-2023  润新知