美文网首页
npm私有库服务搭建及规范定制

npm私有库服务搭建及规范定制

作者: Leiyansen | 来源:发表于2018-12-18 11:18 被阅读0次

    npm私有库服务


    简介

    公司出于自身隐私保护需要,不想把自己的代码开源到包管理区,但是又急需一套完整包管工具,来管理越来越多的组件、模块和项目。对于前端,最熟悉的莫过于npm,bower等;但是bower的市场兼容性明显没有npm强壮,加之commonjs规范的日益成熟。npm应该是前端包管理的不二选择。

    公司对于搭建本地私有npm库有如下要求:

    1. 私有包托管在内部服务器中
    2. 项目中使用了公共仓库上的公共包,也使用了内部服务器上的私有包
    3. 希望下载的时候,公共包走公共仓库,私有包走内部服务器的私有仓库
    4. 服务器硬盘有限,希望只缓存下载过的包,而不是全部同步。
    5. 对于下载,发布npm包有对应的权限管理,安装方便,配置简单,依赖少。

    安装私有包流程

    image

    服务搭建

    node + npm + verdaccio + pm2 + nrm

    Sinopia Verdaccio是一个零配置的私有的带缓存功能的npm包管理工具

    PS: Sinopia多年未更新,Verdaccio是基于Sinopia重构的,注入了更多活力

    # config
    $ /home/ubuntu/.config/verdaccio/config.yaml
    # password
    $ /home/ubuntu/web_npm/verdaccio/htpasswd
    # storage
    $ /home/ubuntu/web_npm/verdaccio/storage
    

    pm2 托管Sinopia进程可以保证进程永远存活
    nrm 便于查看和切换当前使用的registry
    verdaccio-delegated-auth 是为了让服务支持自定义验证的插件


    标准定制

    # Sinopia config.yaml
    # path to a directory with all packages
    storage: /home/ubuntu/web_npm/verdaccio/storage
    auth:
      # htpasswd:
        # file: ./htpasswd
        # max_users: -1
        # mix_users: 1000
     delegated-auth:
        url: https://your-account-server/
        user_key: name # username field, default: username
        pwd_key: password # password field, default: password
    
    # a list of other known repositories we can talk to
    uplinks:
      npmjs:
        url: http://registry.npm.taobao.org/
    
    packages:
      '@company/*':
        # scoped packages
        access: $authenticated
        publish: $authenticated
      '*':
        # keywords: "$all", "$anonymous", "$authenticated"
        access: $all
        publish: $all
        proxy: npmjs
    
    # log settings
    logs:
      - {type: stdout, format: pretty, level: http}
      #- {type: file, path: sinopia.log, level: info}
    listen: 0.0.0.0:4873
    
    1. 为避免客户端创建虚假用户、或失误创建用户,会关闭注册用户功能max_users: -1,采用服务端提供用户账户配置file: ./htpasswd的方式新增用户。
      已经为verdaccio编写自定义验证插件,使用自己的账户系统的用户名和密码进行登录验证verdaccio-delegated-auth
    2. 公司内部发布包到私有服务需要加上前缀@company/${app},例如@company/lodash。前缀包@company/*必须经过账户验证后才能正常执行安装或发布。(company指公司名称)
    3. 发布内部私有包必须有项目自述README,内容必须包含:
      • 基本描述
      • 使用方式
      • 源码地址

    客户端使用

    1. 安装nrm新增私有服务代理,使用自己的账户系统账号登录使用。
    2. 浏览器访问私有服务Socket,查看所有内部私有包。
    $ nrm add company http://126.*.*.99:4873/
    $ nrm use company
    $ npm login
    

    安全

    网关

    更多

    Docker + S3

    相关文章

      网友评论

          本文标题:npm私有库服务搭建及规范定制

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