npm私服

作者: 猴儿十六 | 来源:发表于2020-01-09 22:44 被阅读0次

镜像或是代理,这是一个问题。

需求&选项

多个nodejs项目间的公共代码,但又不太适合发到npmjs.org。

  • 个人多项目公用
  • 团队多项目公用

部分可选方式:

  • npm link:只适合本机上的代码共用,简单粗暴
  • verdaccio:可实现团队间共享,轻量级方案
  • nexus:团队级共享的重量级方案

最终选择nexus,因为它大而全(首先它是一个maven私服),而且我不喜欢npm link。尽管verdaccio试过后也挺好(简单的配置放在本文最后)。

安装配置nexus

以下步骤在安装nexus的服务器进行。

安装

Docker方式是最方便的,其它方式请自行官网查阅。

mkdir -p /data/nexus && chown -R 200 /data/nexus
docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 --name nexus -v /data/nexus:/nexus-data sonatype/nexus3

因为众所周知的原因,docker镜像的拉取可能会出问题,多试几次或者找个可用的mirror。

启动后,访问http://<your host>:8081/,登录nexus。

用户名:admin,初始密码在/data/nexus/admin.password文件中,首次登录需要修改。

配置

新增两个仓库:

  • 名称为npm-registry,类型为proxy,用于缓存公用仓库。当然,你可以把Remote Storage设置为国内镜像,比如https://registry.npm.taobao.org/
  • 名称为npm-private,类型为hosted,用于发布内部代码;

定义仓库组:

  • npm-group,类型为group,这样私有仓库和代理仓库都可以共享相同的URL(后面会说到)。

如果内部代码的发布涉及到对一些公用仓库做修改(但不修改组织名),切记在Members列表中,将npm-private排在npm-registry之前/上。

开启npm token支持:在Realms功能中,启用npm Bearer Token Realm。

私服配置完毕。

安装配置npm

以下步骤,在使用nexus私服的开发环境操作。npm使用私服,可以是全局方式或每项目方式,这里只考虑最省事的全局方式。

配置

设置全局npm私服:

npm set registry http://<your host>:8081/repository/npm-group/

设置npm私服为永久登录:

npm login --registry=http://<your host>:8081/repository/npm-group/ --always-auth

设置npm私服(内部发布用)为永久登录:

npm login --registry=http://<your host>:8081/repository/npm-private/ --always-auth

补充设置,保证yarn能使用npm配置:

npm config set always-auth true

以上设置后,可打开~/.npmrc文件验证,内容大致如下:

registry=http://<your host>:8081/repository/npm-group/
always-auth=true
//<your host>:8081/repository/npm-group/:_authToken=<your token>
//<your host>:8081/repository/npm-private/:_authToken=<your token>

现在可以执行npm installnpm publishyarn installyarn publish了。

常见问题

  • 401
    • 检查是否未启用npm Bearer Token Realm
    • 删除~/.npmrc,重新执行npm login
  • 找不到修改版的公共包

    • 检查是不是private和proxy的顺序不正确
  • 相同版本的包没法publish

    • 不建议重用相同版本号,如果不想像chrome一样疯狂升版本,可以使用prerelease方式
      • yarn: yarn version --prerelease --preid=alpha
      • npm: npm version prerelease --preid=alpha

参考文档

附注:verdaccio

尽管verdaccio是一个完备的private registry解决方案,但个人建议还是把配置文件放在公共库的源代码管理下。

启动verdaccio:

verdaccio --config ./verdaccio.yml

verdaccio.yml:

storage: ./.verdaccio/storage
plugins: ./.verdaccio/plugins

web:
  title: Verdaccio
auth:
  htpasswd:
    file: ./.verdaccio/htpasswd

uplinks:
  npmjs:
    url: https://registry.npmjs.org/
    maxage: 30m
  taobao:
    url: https://registry.npm.taobao.org/
  cnpm:
    url: https://r.cnpmjs.org/
  nj:
    url: https://registry.nodejitsu.com/
  rednpm:
    url: https://registry.mirror.cqupt.edu.cn/
  npmMirror:
    url: https://skimdb.npmjs.com/registry/
  deunpm:
    url: http://registry.enpmjs.org/

packages:
  '@<your org>/*':
    access: $all
    publish: $all
    unpublish: $all

  '@*/*':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: taobao

  '**':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: taobao

server:
  keepAliveTimeout: 60

middlewares:
  audit:
    enabled: true

# log settings
logs:
  - { type: stdout, format: pretty, level: http }

publish:
  allow_offline: true
listen:
  - 0.0.0.0:4873
max_body_size: 100mb

发布及获取包,命令加上--registry=http://localhost:4873即可。

相关文章

  • 发布包到自己的npm私服

    条件: 有一个npm私服 => 知乎 - Nexus Repository Manager 3 搭建 npm 私服...

  • Nexus私服

    容器运行 默认账号admin admin123 配置PyPi私服 配置npm私服 配置 maven私服

  • npm私服

    镜像或是代理,这是一个问题。 需求&选项 多个nodejs项目间的公共代码,但又不太适合发到npmjs.org。 ...

  • 搭建npm私服

    1.安装npm私服服务github地址 2.启动sinopia 你会看到下面两行提示: 访问http://loca...

  • npm install 出现EINTEGRITY 问题解决

    问题:npm私服是用 verdaccio 搭的,npm i A@1.1.0时报错EINTEGRITY,期望是str...

  • 如何使用私服

    如何使用私服安装npm包 查看当前注册配置信息npm config get registry 修改当前注册配置信息...

  • verdaccio 搭建npm私服

    目的 自己或公司其他小伙伴在做开发过程中,可能会逐渐形成有本公司风格的组件库,我们可以把这些组件传到npm上,但有...

  • npm install 401

    在将npm镜像地址切换到私服地址后,采用jenkins自动化部署前端进行npm install报401错误,记录一...

  • npm+nexus 私服搭建(npm配置)

    因公共部分过多所以采取私服形式做到防止冗余,基于构建开发 #查看本机镜像地址 npm config get reg...

  • node.js批量下载npm tgz包

    场景 因为公司使用的是内网,前端使用某些插件的时候不能用外网使用npm下载,这就需要我们自己搭建自己的npm私服,...

网友评论

      本文标题:npm私服

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