一、為什么要用包管理工具?
- 每種語言擴展的包很多,如js有
jquery
React
Vue
等三热。這就是直接使用別人已經(jīng)寫好的。
傳統(tǒng)做法是:去官網(wǎng)下載對應(yīng)的js包就漾,然后放進項目的路徑下呐能。然后在使用的文件里引用。
有了npm和yarn等包管理工具后的做法:包管理工具都有一個集中倉庫抑堡,所有開放的包都放在這個倉庫里摆出,方便了查找和下載。
即開放的包都放在了npm搭建的服務(wù)器里首妖,我們需要時偎漫,可以使用npm提供的命令去他的服務(wù)器上查找相應(yīng)的版本進行下載。 - 管理包之間的依賴關(guān)系:
如:我的一個項目里有缆,使用了一個包A象踊,然后這個包A又依賴于包B,包B又依賴于包C棚壁,D等通危。而且每個包都有確定的版本(不一定是最新的,版本相差太大灌曙,會出現(xiàn)API不兼容的情況)菊碟。
A -》B -》C,D
在沒有包管理之前:人工去下載每一個依賴的包或者使用語言把每個包常用的功能自己實現(xiàn)一遍。
二在刺、為什么要搭建npm私有倉庫(私服)逆害?
例:
- 我有三個vue項目A、B 蚣驼、C魄幕。
- 我在A項目寫了一個
table
組件,又不能將這個組件發(fā)布到npm公共社區(qū)里颖杏。
沒有npm私服時的做法:
- 這時如果B和C項目要用帶這個組件的話纯陨,只能去A項目里復制一份粘貼到B和C項目。
- 如果后面
table
組件更新了的話留储,又只能復制粘貼翼抠。
如上這種情況,耗費時間获讳。有時還會忘了哪個項目的組件時最新的阴颖。一個組件都這么麻煩,如果是多個組件和多個項目丐膝,維護簡直要瘋了量愧。
如果我們有npm私有倉庫的做法:
- 將
table
組件發(fā)布到私有倉庫里 - 每個項目啟動前钾菊,執(zhí)行npm 命令重新下載更新組件即可。
私有npm私有倉庫的好處
- 便于管理企業(yè)內(nèi)的業(yè)務(wù)組件或者模塊
- 私密性
- 確保npm服務(wù)快速穩(wěn)定(私服通常搭建在內(nèi)部的服務(wù)器里)
- 控制npm模塊質(zhì)量和安全(防止惡意代碼植入)
三偎肃、npm安裝流程
*沒有私服:
- 當我們使用
npm install
去安裝一個模塊時煞烫,會先檢查node_modules
目錄中是否已經(jīng)存在這個模塊。 - 如果沒有則會向遠程倉庫查詢累颂,下載并解壓到本地進行安裝红竭。
有私服:
- 用戶install后向私有npm服務(wù)器發(fā)起請求,私有服務(wù)器會先查詢所請求的這個模塊是我們自己的私有模塊或已經(jīng)緩存過的公共模塊喘落。
- 如果是則直接將模塊返回給用戶茵宪。
- 如果請求的是一個還沒有被緩存的公共模塊,那么則會向上游源請求模塊并進行緩存后返回給用戶瘦棋。
- 上游的源可以是npm倉庫地址稀火,也可以是淘寶鏡像地址。
四赌朋、npm的命令和知識點
1.通用查看
1.1 npm root -g
查看通過-g
選項全局安裝的模塊的地址凰狞。
1.2
npm whoami
查看當前登錄npm的賬戶。publish發(fā)布包時可以查看用戶是否正確沛慢。
1.3
npm login
:登錄1.4
npm adduser
:添加新用戶
2. npm配置文件
2.1
npm config list -l
列出npm的左右默認配置項赡若。
2.2
npm config get cache
獲取npm的緩存目錄。config里的所有配置項都可以通過get獲取团甲。
2.3
npm config get registry
獲取node包存放的服務(wù)器地址逾冬。
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
查看文件地址身腻。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)有效炕柔。
4.2 通過npm的config命令配置指向國內(nèi)鏡像源:以后所有從倉庫獲取的包都從這個地址獲取酌泰,不走國外的地址。
注:這條命令時將配置信息更新到
電腦用戶
下的.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)下載
下載有點慢,請耐心等待际插。
2.解壓壓縮包碘耳,進入如下圖的地址(版本號在截圖里有):
2.1 不要直接點擊nexus.exe,在該目錄下使用命令行運行:
nexux.exe /run
2.2 啟動后默認的地址是:
http://localhost:8081
框弛。建議第一次自己配置時辛辨,不要修改配置文件的地址和端口。但如果端口被占用瑟枫,那么只有修改了斗搞。修改過后可能會出現(xiàn)一些問題。默認賬號:admin/admin123
2.3 打開下圖目錄下的
nexus-default.properties
文件可以修改端口和地址慷妙,別的選項不知道什么意思就別動僻焚。2.4 如果在啟動時報如下的錯:
那么就是
nexus.exe
的解壓路徑有中文,把中文改了就可以了膝擂。
3.建立倉庫
打開http://localhost:8081
虑啤,后登錄賬號。
3.1 創(chuàng)建知識庫架馋,有三種類型狞山。
3.2 創(chuàng)建npm(hosted)
私有倉庫
3.3 創(chuàng)建npm(proxy)
代理倉庫
3.4 創(chuàng)建npm(group)
倉庫組
3.5 查看新建的三個倉庫
點進倉庫,可以看到這個倉庫的地址叉寂。
我的三個倉庫的地址分別是(鏈接是點不動的):
- http://localhost:8081/repository/npm-test-hosted/
- http://localhost:8081/repository/npm-test-proxy/
- http://localhost:8081/repository/npm-test-group/
3.6 配置權(quán)限
4. 配置npm
直接執(zhí)行命令:
npm config set registry http://localhost:8081/repository/npm-test-group/
具體的意思參考本文的第四部分:npm的命令和知識點萍启。
5.新建一個npm包,發(fā)布到建立的私服
建立如下圖所示的yx-test-local
包
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)該是步驟和添加用戶時的倉庫地址的問題超埋。
5.3.1 先登錄
hosted
倉庫注意:當
npm adduser
和npm login
時,操作的倉庫一定是hosted
佳鳖,是私有的霍殴。不能是group
。因為我們的包是要發(fā)布到hosted
的5.3.2 執(zhí)行上傳
5.3.3 查看上傳的包
上面除了上傳到私有倉庫的
yx-test-local
包以外系吩,別的包都是進行測試下載的包被緩存到了私服里来庭。
6.下載私有包和開放的包
6.1 新建npm
文件夾,進入文件夾
6.2 下載私有包
上圖紅框的請求地址就是我們剛新建的倉庫組的地址穿挨。
6.3 下載開發(fā)的包
從代理倉庫配置的地址進行下載后緩存月弛。