npm包管理和配置npm的nexus私服

一、為什么要用包管理工具?

  1. 每種語言擴展的包很多,如js有jquery React Vue等。這就是直接使用別人已經寫好的。
    傳統做法是:去官網下載對應的js包,然后放進項目的路徑下。然后在使用的文件里引用。
    有了npm和yarn等包管理工具后的做法:包管理工具都有一個集中倉庫,所有開放的包都放在這個倉庫里,方便了查找和下載。
    即開放的包都放在了npm搭建的服務器里,我們需要時,可以使用npm提供的命令去他的服務器上查找相應的版本進行下載。
  2. 管理包之間的依賴關系:
    如:我的一個項目里,使用了一個包A,然后這個包A又依賴于包B,包B又依賴于包C,D等。而且每個包都有確定的版本(不一定是最新的,版本相差太大,會出現API不兼容的情況)。

A -》B -》C,D

在沒有包管理之前:人工去下載每一個依賴的包或者使用語言把每個包常用的功能自己實現一遍。

二、為什么要搭建npm私有倉庫(私服)?

例:

  1. 我有三個vue項目A、B 、C。
  2. 我在A項目寫了一個table組件,又不能將這個組件發布到npm公共社區里。

沒有npm私服時的做法:

  1. 這時如果B和C項目要用帶這個組件的話,只能去A項目里復制一份粘貼到B和C項目。
  2. 如果后面table組件更新了的話,又只能復制粘貼。

如上這種情況,耗費時間。有時還會忘了哪個項目的組件時最新的。一個組件都這么麻煩,如果是多個組件和多個項目,維護簡直要瘋了。

如果我們有npm私有倉庫的做法:

  1. table組件發布到私有倉庫里
  2. 每個項目啟動前,執行npm 命令重新下載更新組件即可。

私有npm私有倉庫的好處

  • 便于管理企業內的業務組件或者模塊
  • 私密性
  • 確保npm服務快速穩定(私服通常搭建在內部的服務器里)
  • 控制npm模塊質量和安全(防止惡意代碼植入)

三、npm安裝流程

*沒有私服:

  1. 當我們使用npm install去安裝一個模塊時,會先檢查node_modules目錄中是否已經存在這個模塊。
  2. 如果沒有則會向遠程倉庫查詢,下載并解壓到本地進行安裝。

有私服:

  1. 用戶install后向私有npm服務器發起請求,私有服務器會先查詢所請求的這個模塊是我們自己的私有模塊或已經緩存過的公共模塊。
  2. 如果是則直接將模塊返回給用戶。
  3. 如果請求的是一個還沒有被緩存的公共模塊,那么則會向上游源請求模塊并進行緩存后返回給用戶。
  4. 上游的源可以是npm倉庫地址,也可以是淘寶鏡像地址。

四、npm的命令和知識點

1.通用查看

1.1 npm root -g
查看通過-g選項全局安裝的模塊的地址。

image.png

1.2 npm whoami
查看當前登錄npm的賬戶。publish發布包時可以查看用戶是否正確。
image.png

1.3 npm login :登錄
1.4 npm adduser :添加新用戶

2. npm配置文件

image.png

2.1 npm config list -l
列出npm的左右默認配置項。
2.2 npm config get cache
獲取npm的緩存目錄。config里的所有配置項都可以通過get獲取。
2.3 npm config get registry
獲取node包存放的服務器地址。
n

3. npm獲取配置的優先級

下面優先級由高到低:
3.1 命令行參數
3.2 環境變量
3.3 用戶配置文件(.npmrc):npm config get userconfig用于查看所在地址,通常在電腦用戶文件夾下。

文件

3.4 全局配置文件:通過npm config get globalconfig查看文件地址。
image.png

3.5 內置配置文件:npm安裝目錄下的npmrc文件。
我的:D:\SOFTWARE\Node\node_modules\npm
3.6 默認配置:npm本身都有默認的配置參數,如果以上都沒有設置,則npm會使用默認的配置參數。

:在使用命令進行屬性配置時,屬性默認是被存儲與用戶的配置文件(.npmrc)中的,命名后加上--global則會被存儲在全局配置文件中。

4.配置npm的注冊源方式

4.1 通過給npm命令添加注冊源選項:這種方式指定的注冊源只在本條命令內有效。

image.png

4.2 通過npm的config命令配置指向國內鏡像源:以后所有從倉庫獲取的包都從這個地址獲取,不走國外的地址。
image.png

注:這條命令時將配置信息更新到電腦用戶下的.npmrc文件。我的這個文件地址:C:\Users\Thinkpad\.npmrc
4.3 直接修改C:\Users\Thinkpad\.npmrc文件,打開后修改:

// .npmrc
registry=https://registry.npm.taobao.org 



以上都是為下面配置npm私服做準備的,畢竟需要知道為什么這么做。

五、windows10配置npm的nexus私服

1.下載軟件

點此處去官網下載
下載有點慢,請耐心等待。

image.png


2.解壓壓縮包,進入如下圖的地址(版本號在截圖里有):

image.png

2.1 不要直接點擊nexus.exe,在該目錄下使用命令行運行:nexux.exe /run
2.2 啟動后默認的地址是:http://localhost:8081。建議第一次自己配置時,不要修改配置文件的地址和端口。但如果端口被占用,那么只有修改了。修改過后可能會出現一些問題。默認賬號:admin/admin123
2.3 打開下圖目錄下的nexus-default.properties文件可以修改端口和地址,別的選項不知道什么意思就別動。
image.png

image.png

2.4 如果在啟動時報如下的錯:
image.png

那么就是nexus.exe的解壓路徑有中文,把中文改了就可以了。


3.建立倉庫

打開http://localhost:8081,后登錄賬號。

3.1 創建知識庫,有三種類型。

image.png

image.png

3.2 創建npm(hosted)私有倉庫

image.png

3.3 創建npm(proxy)代理倉庫

image.png

3.4 創建npm(group)倉庫組

image.png

3.5 查看新建的三個倉庫

image.png

點進倉庫,可以看到這個倉庫的地址。
我的三個倉庫的地址分別是(鏈接是點不動的):

3.6 配置權限

image.png

4. 配置npm

直接執行命令:
npm config set registry http://localhost:8081/repository/npm-test-group/
具體的意思參考本文的第四部分:npm的命令和知識點。


5.新建一個npm包,發布到建立的私服

建立如下圖所示的yx-test-local

image.png

5.1 package.json文件使用npm init -y生成。

5.2 新建index.js文件,內容如下。

// index.js
module.exports = 123456789;

5.3 進入yx-test-local包根目錄,發布包。

直接執行如下圖命名發布包時報錯:當時一直以為是權限的問題,但使用電腦Administator賬戶也同樣報錯。應該是步驟和添加用戶時的倉庫地址的問題。

image.png

5.3.1 先登錄hosted倉庫
image.png

注意:npm addusernpm login時,操作的倉庫一定是hosted,是私有的。不能是group。因為我們的包是要發布到hosted
5.3.2 執行上傳
image.png

5.3.3 查看上傳的包
image.png

上面除了上傳到私有倉庫的yx-test-local包以外,別的包都是進行測試下載的包被緩存到了私服里。


6.下載私有包和開放的包

6.1 新建npm文件夾,進入文件夾

image.png

6.2 下載私有包

image.png

上圖紅框的請求地址就是我們剛新建的倉庫組的地址。

6.3 下載開發的包

image.png

從代理倉庫配置的地址進行下載后緩存。

6.4 查看下載的包

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380