一.nexus安裝
前置條件 :已經安裝了JDK
1:下載nexus(http://www.sonatype.com/download-oss-sonatype) 最新版本3.0,下載目錄為/Users/newuser/Downloads/
2: 在終端輸入/Users/newuser/Downloads/nexus-3.13.0-01-mac/nexus-3.13.0-01/bin/nexus start
3. 在瀏覽器中輸入http://localhost:8081/,如果能打開如下頁面,說明啟動成功

二.nexus搭建npm服務
環境
- Contos 7
- Nexus 3.10
- npm 5.5.1
創建npm私庫
-
通過瀏覽器訪問Nexus:
http://服務器IP:8081 -
點擊右上角進行登錄,初始用戶名和密碼為:
admin
admin123
點擊設置界面,選擇Repositories,點擊Create repository,如下圖所示:

創建blob
創建一個blob用於存放npm相關數據
| 項目 | 詳細說明 |
|---|---|
| Type | File |
| Name | npm-repo-blob |
| PATH | /usr/local/sonatype-work/nexus3/blobs/npm-repo-blob |
建議實際項目中各個倉庫根據具體情況決定是否要分別創建blob進行對應,此處進行演示就通篇使用一個blob
- 選擇倉庫類型,這里Docker有三種類型,分別是group、hosted、proxy。
| 項目 | 詳細說明 |
|---|---|
| hosted | 本地存儲,提供本地私庫功能 |
| proxy | 提供代理其他倉庫的類型 |
| group | 組類型,可以組合多個倉庫為一個地址提供服務 |
以proxy類型,所以選擇npm(proxy),如下圖:

- 創建proxy倉庫
| 項目 | 詳細說明 |
|---|---|
| 類型 | npm(proxy) |
| Name | npm-repo-proxy |
| Remote Storage | https://registry.npm.taobao.org |
| Blob store | npm-repo-blob |
注意:此處的Remote Storage即為可以連接的npm的registry的地址,需要保證正確,並且當前機器能夠訪問到,比如可以使用curl確認:
[root@angular ~]# curl https://registry.npmjs.org {"db_name":"registry","doc_count":715000,"doc_del_count":344,"update_seq":8090315,"purge_seq":0,"compact_running":false,"disk_size":5368389766,"data_size":3541008450,"instance_start_time":"1510668164237911","disk_format_version":6,"committed_update_seq":8090315}[root@angular ~]#
注意此處,可以還設定與社區相關的賬號和密碼等信息進行進一步連接。
在這里是采用淘寶鏡像,如下圖:

最后點擊下方Create repository完成創建倉庫。
創建priavete倉庫
創建一個Hosted的倉庫作為private倉庫,用於管理非npm社區的第三方包或者自己開發的內容。具體設定信息如下:
| 項目 | 詳細說明 |
|---|---|
| 類型 | npm(hosted) |
| Name | npm-repo-hosted |
| Blob store | npm-repo-blob |
其余Default設定即可
創建group倉庫
創建一個group倉庫,具體設定信息如下:
| 項目 | 詳細說明 |
|---|---|
| 類型 | npm(group) |
| Name | npm-repo-group |
| Blob store | npm-repo-blob |
| Member repositories | npm-repo-hosted |
| Member repositories | npm-repo-proxy |
本地npm設定
驗證用npm版本
[root@angular ~]# npm -v 5.5.1 [root@angular ~]# node -v v9.1.0 [root@angular ~]# |
設定.npmrc
可以使用如下命令,也可直接修改.npmrc文件
[root@angular ~]# npm config set registry http://localhost:8081/repository/npm-repo-proxy/ [root@angular ~]# //確認.npmrc [root@angular ~]# cat ~/.npmrc registry=http://localhost:8081/repository/npm-repo-proxy/ [root@angular ~]# |
確認
至此,Nexus的設定准備基本就緒,可以確認結果了。
事前確認
[root@angular ~]# npm list -g gulp /usr/local/npm/node/lib └── (empty) [root@angular ~]# |
安裝gulp
打開loglevel將其設定為info,在安裝的過程中可以看到npm http fetch與新創建的proxy倉庫的交互,因為其會將相關的依賴下載到本地nexus的npm私庫中。
[root@angular ~]# npm -loglevel info install -g gulp npm info it worked if it ends with ok npm info using npm@5.5.1 npm info using node@v9.1.0 ... npm http fetch GET 200 http://192.168.163.151:8081/repository/npm-repo-proxy/gulplog/-/gulplog-1.0.0.tgz 4439ms ... /usr/local/npm/node/bin/gulp -> /usr/local/npm/node/lib/node_modules/gulp/bin/gulp.js ... npm info lifecycle gulp@3.9.1~postinstall: gulp@3.9.1 + gulp@3.9.1 added 186 packages in 143.59s npm info ok [root@angular ~]# |
結果確認
[root@angular ~]# npm list -g gulp /usr/local/npm/node/lib └── gulp@3.9.1 [root@angular ~]# |
group倉庫確認
gulp 3.9.1已經通過group倉庫可以看到

proxy倉庫確認
gulp 3.9.1已經通過proxy倉庫可以看到

