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

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

  1. 每種語言擴展的包很多,如js有jquery React Vue等三热。這就是直接使用別人已經(jīng)寫好的。
    傳統(tǒng)做法是:去官網(wǎng)下載對應(yīng)的js包就漾,然后放進項目的路徑下呐能。然后在使用的文件里引用。
    有了npm和yarn等包管理工具后的做法:包管理工具都有一個集中倉庫抑堡,所有開放的包都放在這個倉庫里摆出,方便了查找和下載。
    即開放的包都放在了npm搭建的服務(wù)器里首妖,我們需要時偎漫,可以使用npm提供的命令去他的服務(wù)器上查找相應(yīng)的版本進行下載。
  2. 管理包之間的依賴關(guān)系:
    如:我的一個項目里有缆,使用了一個包A象踊,然后這個包A又依賴于包B,包B又依賴于包C棚壁,D等通危。而且每個包都有確定的版本(不一定是最新的,版本相差太大灌曙,會出現(xiàn)API不兼容的情況)菊碟。

A -》B -》C,D

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

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

例:

  1. 我有三個vue項目A、B 蚣驼、C魄幕。
  2. 我在A項目寫了一個table組件,又不能將這個組件發(fā)布到npm公共社區(qū)里颖杏。

沒有npm私服時的做法:

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

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

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

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

私有npm私有倉庫的好處

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

三偎肃、npm安裝流程

*沒有私服:

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

有私服:

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

四赌朋、npm的命令和知識點

1.通用查看

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

image.png

1.2 npm whoami
查看當前登錄npm的賬戶。publish發(fā)布包時可以查看用戶是否正確沛慢。
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包存放的服務(wù)器地址逾冬。
n

3. npm獲取配置的優(yōu)先級

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

文件

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

3.5 內(nèi)置配置文件:npm安裝目錄下的npmrc文件。
我的:D:\SOFTWARE\Node\node_modules\npm
3.6 默認配置:npm本身都有默認的配置參數(shù)匹厘,如果以上都沒有設(shè)置嘀趟,則npm會使用默認的配置參數(shù)。

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

4.配置npm的注冊源方式

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

image.png

4.2 通過npm的config命令配置指向國內(nèi)鏡像源:以后所有從倉庫獲取的包都從這個地址獲取酌泰,不走國外的地址。
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.下載軟件

點此處去官網(wǎng)下載
下載有點慢,請耐心等待际插。

image.png


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

image.png

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

image.png

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

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


3.建立倉庫

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

3.1 創(chuàng)建知識庫架馋,有三種類型狞山。

image.png

image.png

3.2 創(chuàng)建npm(hosted)私有倉庫

image.png

3.3 創(chuàng)建npm(proxy)代理倉庫

image.png

3.4 創(chuàng)建npm(group)倉庫組

image.png

3.5 查看新建的三個倉庫

image.png

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

3.6 配置權(quán)限

image.png

4. 配置npm

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


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

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

image.png

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

5.2 新建index.js文件伊约,內(nèi)容如下。

// index.js
module.exports = 123456789;

5.3 進入yx-test-local包根目錄孕蝉,發(fā)布包屡律。

直接執(zhí)行如下圖命名發(fā)布包時報錯:當時一直以為是權(quán)限的問題,但使用電腦Administator賬戶也同樣報錯降淮。應(yīng)該是步驟和添加用戶時的倉庫地址的問題超埋。

image.png

5.3.1 先登錄hosted倉庫
image.png

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

5.3.3 查看上傳的包
image.png

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


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

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

image.png

6.2 下載私有包

image.png

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

6.3 下載開發(fā)的包

image.png

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

6.4 查看下載的包

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肴盏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子帽衙,更是在濱河造成了極大的恐慌菜皂,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厉萝,死亡現(xiàn)場離奇詭異恍飘,居然都是意外死亡,警方通過查閱死者的電腦和手機谴垫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門章母,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翩剪,你說我怎么就攤上這事乳怎。” “怎么了肢专?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵舞肆,是天一觀的道長。 經(jīng)常有香客問我博杖,道長椿胯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任剃根,我火速辦了婚禮哩盲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狈醉。我一直安慰自己廉油,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布苗傅。 她就那樣靜靜地躺著抒线,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渣慕。 梳的紋絲不亂的頭發(fā)上嘶炭,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音逊桦,去河邊找鬼眨猎。 笑死,一個胖子當著我的面吹牛强经,可吹牛的內(nèi)容都是我干的睡陪。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼兰迫!你這毒婦竟也來了诽偷?” 一聲冷哼從身側(cè)響起绳慎,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤戳吝,失蹤者是張志新(化名)和其女友劉穎踏拜,沒想到半個月后筝尾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體局义,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡哀卫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年澜沟,在試婚紗的時候發(fā)現(xiàn)自己被綠了府蔗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晋控。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖姓赤,靈堂內(nèi)的尸體忽然破棺而出赡译,到底是詐尸還是另有隱情,我是刑警寧澤不铆,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布蝌焚,位于F島的核電站,受9級特大地震影響誓斥,放射性物質(zhì)發(fā)生泄漏只洒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一劳坑、第九天 我趴在偏房一處隱蔽的房頂上張望毕谴。 院中可真熱鬧,春花似錦距芬、人聲如沸涝开。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舀武。三九已至,卻和暖如春离斩,著一層夾襖步出監(jiān)牢的瞬間银舱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工捐腿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纵朋,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓茄袖,卻偏偏與公主長得像操软,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宪祥,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351