zoukankan      html  css  js  c++  java
  • 使用cnpm搭建企业内部私有NPM仓库

    cnpm是企业内部搭建npm镜像和私有npm仓库的开源方案。它同时解决了现有npm架构的一些问题

    为什么企业需要私有NPM

    主要有如下理由:

    • 确保npm服务快速、稳定:对于企业来说,上线生产系统的时候,需要花半小时甚至更久等待npm模块依赖安装完毕,是不可接受的。部署镜像后,可以确保高速、稳定的npm服务。
    • 发布私有模块:官方的npm上的模块全部是开源的。一些与企业业务逻辑相关的模块可能不适合开源。这部分私有的模块放在私有NPM仓库中,使用起来各种方便。
    • 控制npm模块质量和安全:npm上的模块质量参差不齐,搭建私有仓库,可以更严格地控制模块的质量和安全,只有经过审核的模块才允许被加入私有仓库。

    cnpm的特点

    • 压缩包等文件从数据库中分离,放在CDN上,减轻了数据库的压力,提高了访问速度。
    • 使用MySQL替换了CouchDB,更容易部署。同时由于大部分开发者更熟悉MySQL,因此架设起来更方便。
    • CDN和MySQL都可以方便地扩展。

    cnpm架构

    5分钟部署

    部署cnpm只需5分钟。

    依赖

    • Node
    • MySQL
    • Redis
    • qiniu CND (或其他CDN)

    部署过程

    获取代码

    git clone git://github.com/fengmk2/cnpmjs.org.git $HOME/cnpmjs.org
    cd $HOME/cnpmjs.org
    

    创建MySQL表

    ; mysql -u yourname -p
    mysql> use cnpmjs;
    mysql> source docs/db.sql
    

    然后编写配置文件config/config.js

    module.exports = {
        debug: false,
        enableCluster: true, // enable cluster mode
        mysqlServers: [
          {
            host: 'localhost',
            port: 3306,
            user: 'cnpmjs',
            password: 'cnpmjs123',
          }
        ],
        mysqlDatabase: 'cnpmjstest',
        redis: {
          host: 'localhost',
          port: 6379,
        },
        nfs: null, //use your own CND here
        enablePrivate: true, // enable private mode, only admin can publish, other use just can sync package from source npm
        admins: {
          admin: 'admin@cnpmjs.org',
        },
        syncModel: 'exist'
      };
    

    安装依赖

    make install
    

    启动

    ; npm run start
    
    Starting cnpmjs.org ...
    Start nodejs success. PID=27175
    

    好了,部署完成!

    客户端设置

    服务跑起来之后,企业员工需要在自己的电脑上配置下客户端。

    首先安装cnpm客户端:

    npm install -g cnpm
    

    在自己的脚本的启动文件(例如.zshrc.bashrc)中添加别名:

    echo "#lnpm alias
    alias lnpm='cnpm --registry=http://localhost:7001
     --registryweb=http://localhost:7002
     --cache=$HOME/.npm/.cache/lnpm
     --userconfig=$HOME/.lnpmrc'" >> $HOME/.zshrc && source $HOME/.zshrc
    

    注意用自己的仓库信息替换上面命令的相关部分。

    之后就可以用lnpm命令访问企业的内部NPM了,各种接口和NPM一样。

    注意,目前cnpm的权限控制比较简单,只有admin用户有权publishNPM模块。如果你的企业需要灵活的权限控制,需要自行开发。

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/jymz/p/4511284.html
Copyright © 2011-2022 走看看