<五>企業級開源倉庫nexus3實戰應用–使用nexus3配置npm私有倉庫


一兩個星期之前,你如果在我跟前說起私服的事情,我大概會繞着你走,因為我對這個東西真的一竅不通。事實上也正如此,開發同學曾不止一次的跟我說公司的私服版本太舊了,許多新的依賴編譯之后不會從遠程倉庫自動緩存下來,然后每次就需要手動的上傳,不方便極了。我聽了之后,一方面確實因為各種忙碌沒有抽開時間,但另一方面,則是每當打開私服面對着滿屏的英文時,我都覺得眼前私服畢竟還能用,就不折騰了。

 

直到偶然一個契機,在網上看到一篇介紹nexus3.x的文章,文章寫得也比較清晰,我也有興致細讀下去,就這樣,開啟了我的nexus3私服之旅。

開始我以為這個只是針對maven私服而存在的工具,后來才發現它所支持的,竟然將運維日常所面臨的各種私服都包括了,這就極大的引發了我的鑽研興致,從maven私服的研究開始,一發不可收拾的,就又寫出了一個nexus3系列教程,涵蓋了安裝,配置,maven私服,maven私服從2.x到3.x的遷移,docker私服,npm私服,yum私服,縱觀全網絡,大概也找不到一個人如此這般的,傾盡所有的,知無不言的,言無不盡的將nexus3作為一個系列寫成文章的了。而現在,如果再有人與我說起私服的事情,至少我不會跑了,或許更想停下來了,,,哈哈。這就是付出學習所給人帶來的心境上的轉化!

前言啰嗦幾句,願您在這個小系列中,學習愉快!

想要查看本系列其他文章:請點此處跳轉

希望正在讀這段話的你能夠在這個小系列中獲得自信以及喜悅!

當我們運行前端項目的時候,常常在解決依賴的時候會加上一個參數npm install --registry=https://registry.npm.taobao.org將源指定為淘寶的源,以期讓速度加快起來,事實上這種的確能夠讓速度變快,但是長久來看,如果想真正的快速敏捷開發部署,搭建企業內部的私服,則會讓速度更上一個台階。

搭建npm私服,我們依舊使用nexus3。

與其他私服一樣的,npm私服同樣有三種類型:

  • hosted : 本地存儲,即同 docker 官方倉庫一樣提供本地私服功能
  • proxy : 提供代理其他倉庫的類型,如 docker 中央倉庫
  • group : 組類型,實質作用是組合多個倉庫為一個地址

那么就來一個一個創建。

1,創建blob存儲。

為其創建一個單獨的存儲空間。

2,創建hosted類型的npm。

  • Name: 定義一個名稱local-npm
  • Storage:Blob store,我們下拉選擇前面創建好的專用blob:npm-hub。
  • Hosted:開發環境,我們運行重復發布,因此Delpoyment policy 我們選擇Allow redeploy。這個很重要!

3,創建一個proxy類型的npm倉庫。

其他的均是默認。

整體配置截圖如下:

4,創建一個group類型的npm倉庫。

  • Name:group-npm
  • Storage:選擇專用的blob存儲npm-hub。
  • group : 將左邊可選的2個倉庫,添加到右邊的members下。

整體配置截圖如下:

這些配置完成之后,就可以使用了。

5,驗證使用。

新建一台環境干凈的主機,安裝好node環境。

首先通過curl 192.168.106.10/a | sh安裝好node環境。

然后拷貝一份前端項目的源碼。

1,首先獲取默認的倉庫地址:

  1. [root@moban business_jsdweb]$npm config get registry
  2. https://registry.npmjs.org/

2,配置為私服地址。

從如下截圖中查看(其實就是創建的組對外的地址)。

通過如下命令配置:

  1. [root@moban business_jsdweb]$npm config set registry http://192.168.112.214:8081/repository/group-npm/
  2. [root@moban business_jsdweb]$npm config get registry
  3. http://192.168.112.214:8081/repository/group-npm/

現在開始安裝,安裝之前先看一下組里的內容:

可以看到還是空的。

3,安裝編譯。

  1. npm install

在編譯的過程中,我們已經可以看看組里的變化了:

安裝完成,整個過程如下,可以看到一共花費了82秒

  1. [root@moban business_jsdweb]$npm install
  2.  
  3. > uglifyjs-webpack-plugin@0.4.6 postinstall /root/business_jsdweb/node_modules/webpack/node_modules/uglifyjs-webpack-plugin
  4. > node lib/post_install.js
  5.  
  6. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
  7. npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
  8.  
  9. added 1216 packages from 717 contributors in 82.171s

4,再一次安裝編譯。

這里再准備一台環境干凈的主機,然后進行一次編譯安裝,看看效果。

編譯之前,先將遠程地址配置為我們自己的:

  1. [root@7-3 business_jsdweb]$npm config get registry
  2. https://registry.npmjs.org/
  3. [root@7-3 business_jsdweb]$npm config set registry http://192.168.112.214:8081/repository/group-npm/
  4. [root@7-3 business_jsdweb]$npm config get registry
  5. http://192.168.112.214:8081/repository/group-npm/

然后編譯,看效果:

  1. [root@7-3 business_jsdweb]$npm install
  2.  
  3. > uglifyjs-webpack-plugin@0.4.6 postinstall /root/business_jsdweb/node_modules/webpack/node_modules/uglifyjs-webpack-plugin
  4. > node lib/post_install.js
  5.  
  6. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
  7. npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
  8.  
  9. added 1216 packages from 717 contributors in 31.693s

可以看到,同樣是全新的環境下,因為第一次已經將依賴從遠程緩存到本地私服,那么在第二次安裝編譯的時候,用時31秒

私服的重要性,以及便捷性,高下立見!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM