美文网首页vueitWeb前端编程
nexus 上搭建npm本地服务器

nexus 上搭建npm本地服务器

作者: pengji | 来源:发表于2017-08-11 17:51 被阅读4207次

    nexus 纯小白文,如有雷同,大概率我参考了你的文档。

    1.在本地运行nexus

    附上下载链接:Nexus Repository OSS 下载链接
    附上文档链接:Nexus Repository OSS 文档链接

    有几个值得注意的是

    • 我的 系统为 64位 win 7,平时只配置了java的基本环境,没有配置编译环境。很尴尬,配置javac耽误了我一点时间。需要的同学,在运行之前 需要配置一下jre环境。

    • 我下载的是 nexus-3.5.0-02 这个版本。事实证明在win下虽然看起来一副人畜无害的样子,似乎可以直接点击安装,但是事实上,啧啧啧。

    Paste_Image.png

    这里没有好好阅读文档,也消耗了我的一些时间,下面放出win 下正确启动方法

    // 在 \nexus-3.5.0-02\bin 目录下执行
    $ nexus.exe /run
    
    • 这里经测试 用win自带的cmd,和budun都可以比较好的启动,用git bash则启动不是很好


      Paste_Image.png

    启动之后默认地址为 localhost:8081, 默认账号密码 admin/ admin123

    Nexus Repository Manager 中添加 npm

    如果点击:

    Paste_Image.png

    这里有三个类型的npm选项:

    Paste_Image.png

    文档中对这三个类型的仓库有详细的解释:

    Paste_Image.png

    附上某歌翻译:

    Proxying npm Registries

    为了减少开发人员和CI服务器的重复下载量并提高下载速度,您应该对托管在https://registry.npmjs.org上的注册表进行代理。 默认情况下,npm直接访问此注册表。 您还可以代理您需要的任何其他注册表。
    要代理外部npm注册表,您只需创建一个新的npm(代理),如“存储库管理”中所述。
    最小配置步骤是:

    Private npm Registries

    私人npm注册表可用于上传您自己的软件包以及第三方软件包。 您可以通过在存储库管理器中设置npm格式的托管存储库来创建私有的npm注册表。 为了这些目的,建立两个独立的托管存储库是一个很好的做法。
    要创建具有npm格式的托管存储库,只需创建一个新的npm(托管),如“存储库管理”中所述。
    最小配置步骤是:

    • 定义名称
    • 选择存储的Blob存储

    随着软件包从存储库部署或删除,npm注册表信息将立即更新。

    Grouping npm Registries

    存储库组是将所有npm注册表存储库从存储库管理器公开给您的用户的推荐方式,而不需要任何其他客户端配置。存储库组允许您将多个代理和托管存储库的聚合内容公开为一个URL到npm和其他工具。这可以通过创建一个新的npm(组),如“存储库管理”中所述,用于npm存储库。
    最小配置步骤是:

    • 定义名称
    • 选择存储的Blob存储
    • 以所需的顺序将npm存储库添加到成员列表中

    典型的有用的示例是将代理存储库分组:代理npm注册表,npm托管存储库与内部软件包和另一个npm托管存储库与第三方软件包。
    使用存储库组的URL作为客户端工具中的npm存储库URL,您可以使用一个URL访问所有三个存储库中的软件包。添加的任何新软件包以及添加到组中的任何新存储库将自动可用。


    1. 创建 Proxying npm Registries 代理仓库
    Paste_Image.png
    1. 创建 Hosted npm Registries 代理仓库
    Paste_Image.png
    1. 创建 Grouping npm Registries 仓库
      需要注意的是组仓库要把之前的 proxy 和 hosted 都添加上。
    Paste_Image.png

    我的目录对应为 mytest/myhost/mygroup

    在home目录下, 的.npmrc文件中添加 registry = http://localhost:8081/repository/npm-all/ 。这个路径要和自己的路径一致,并且最后的rep名要和group相同。

    win下 home路径:


    Paste_Image.png

    这时尝试一下

    // 查看一下 是否从本地服务器中下载
    $ npm -loglevel info install grunt
    
    图片我抄的,我自己的没截图

    此时可以验证一下 是否依赖走了代理:

    Paste_Image.png

    设置权限

    把这个选项拖到右边就可以了

    Paste_Image.png

    在admin之外可以重新设置一个账号,以及权限

    Paste_Image.png
    // 使用
    $ npm login –registry=http://localhost:8081/repository/mygroup
    // 进行登陆,需要填写账号、密码以及邮箱。
    
    Paste_Image.png

    发布到hosted

    我和原教程不一样的是:我发布到本地hosted, 而不是直接到npm社区,这里需要注意的是 通过proxy是可以直接发布到npm社区的,使用的是社区的账号密码,这个需要提前申请

    要发布的模块,必须保证在根目录下有package.json文件,否则会报错。

    pachage.json文件内容比较随意,如果比较懒 可以用 npm init 直接自动生成。

      {
          "name": "myhost",
          "version": "1.0.0"
        }
    

    然后执行发布命令:

     $ npm publish –registry http://localhost:8081/repository/myhost
    
    Paste_Image.png

    然后我遇到了报错,按照报错执行

     $ npm adduser –registry http://localhost:8081/repository/myhost
    

    这里值得注意的是, adduser的时候要指明是哪个rep,要不就会add到默认的.npmrc 里添加的 rep中

    Paste_Image.png

    添加完用户之后,再执行发布命令就ok了。

    Paste_Image.png

    package.json可以指定name 和version并且可以添加发布路径的配置:

      {
         "name": "intro",
         "version": "1.0.0",
         "publishConfig" : {
             "registry" : "http://localhost:8081/repository/myhost/"
          }
      }
    

    这样的话发布直接用 npm publish就可以了。

    发布之后可以在 系统中的 左侧browse 中的assets中看到上传的资源

    Paste_Image.png

    group 中可以同时看到 proxy 和 hosted 的资源, proxy会存下第一次下载过的目录,之后再下载时走的是代理,hosted存的是本地上传的包资源。

    然后可以在本地下载一下刚才上传到hosted的包:

    Paste_Image.png

    以上,为所有内容。

    参考: npm 私服(上)npm 私服(下)nexus搭建npm私服
    感谢以上朋友的文档, 内容侵删。

    相关文章

      网友评论

      • bbc1f74273b2:大神 我从git上clone了antd的原码修改了一下 ,想传在自己的私有库中,应该怎么传啊?
        bbc1f74273b2:方便加您qq吗?
        bbc1f74273b2:@pengji package.json 应该如何配置呢?只把仓库换一下就好了吗?
        pengji:按照上文搭建好之后,配置好package.json中的内容(指定好仓库),然后npm publish就可以了
      • 0ea5154585ab:创建用户需要给什么权限吗?
        pengji:@耿加稳 这个看你需求 要是所有人都一样 就给管理员一样的权限就行

      本文标题:nexus 上搭建npm本地服务器

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