前端verdaccio搭建npm私服(linux)+客戶端使用包

前言
最近想在公司內(nèi)網(wǎng)上搭建一個npm服務(wù),只供公司內(nèi)部使用厉膀。有兩個工具sinopia的github地址verdaccio的github地址,但是sinopia在四年前已經(jīng)停止更新了二拐,沒人維護了服鹅,留下許多坑。幸好有一群大佬又從sinopia開了一個分支百新,更名為verdaccio企软。最近的一次更新我看是在10小時前~
verdaccio官網(wǎng)

搭建npm私服的好處

1、包在公司內(nèi)部自己的服務(wù)器上饭望,不會發(fā)布到外網(wǎng)仗哨;
2、下載包和發(fā)布包都有權(quán)限管理
3杰妓、項目中我們用到包可以直接緩存在我們自己到服務(wù)器藻治,不用再到npm中下載,直接從服務(wù)器中下載巷挥,速度得到提升桩卵,比淘寶鏡像的速度還快
4、可以將公司自己開發(fā)到包倍宾,發(fā)布到服務(wù)上雏节,供公司內(nèi)部使用

1、 服務(wù)器端搭建

1.1高职、在你的Linux服務(wù)端安裝node環(huán)境

node -v //查看是否已經(jīng)安裝過node,已經(jīng)安裝跳過此步驟

有兩種方式下載:
1钩乍、下載到本地后上傳到服務(wù)器下載地址
2、wget下載到本地目錄

$ wget https://nodejs.org/dist/v9.3.0/node-v9.3.0-linux-x64.tar.xz

解壓及重命名:

$ xz -d node-v9.3.0-linux-x64.tar.xz 
$ tar -xf node-v9.3.0-linux-x64.tar
$ mv node-v9.3.0-linux-x64 node-v9.3.0

設(shè)置node全局環(huán)境變量

vi .bash_profile  // 修改用戶環(huán)境變量文件

鍵入i,進入插入模式

export NODE_HOME=/usr/local/node-v9.3.0/bin
export PATH=$PATH:$NODE_HOME

Esc退出插入模式怔锌,shift+;后輸入wq保存并且退出
讓修改的環(huán)境變量文件生效

source .bash_profile

驗證

node -v
npm -v

1.2 安裝verdaccio(加上–unsafe-perm的原因是防止報grywarn權(quán)限的錯)

npm install -g verdaccio --unsafe-perm

1.3 修改配置文件

vi /root/.config/verdaccio/config.yaml

在配置文件末尾最后添加監(jiān)聽端口

listen: 0.0.0.0:4873 // verdaccio 默認端口
image.png

1.4 啟動verdaccio

verdaccio
image.png

到這里就可以看到我們啟動成功的頁面了寥粹,在瀏覽器中訪問我們服務(wù)端的ip:


image.png

helloworld是我已經(jīng)上傳的一個測試包。

1.5 利用pm2一直守護verdaccio進程

直接使用 verdaccio雖然可以正常啟動埃元,但是不能一直保持進程開啟涝涤,所以我們可以使用pm2來對verdaccio進程進行托管啟動

1.5.1 安裝pm2
npm install -g pm2 --unsafe-perm
1.5.2 pm2啟動verdaccio
pm2 start verdaccio
1.5.3 查看pm2 守護下的進程verdaccio的實時日志
pm2 show verdaccio 

通過這個命令我們可以從下圖中看到所有verdaccio的所有信息,打開 out log path查看進程輸出日志,出現(xiàn)錯誤時候也可以打開error log來查看錯誤日志


image.png

查看該路徑下對日志命令:

tail /root/.pm2/logs/verdaccio-out.log
1.5.4 添加用戶
npm adduser --registry http://172.29.XX.XX:4873        //后面是我們的私服地址

會讓你輸入用戶名岛杀、密碼阔拳、郵箱即可~
然后可以在頁面中登錄

image.png

2、 客戶端使用

2.1 設(shè)置下載源

如上类嗤,我們使用的服務(wù)端的ip地址為172.29.xx.39:4873
查看npmrc文件內(nèi)容糊肠,此文件內(nèi)容是npm鏡像下載源的地址

cat .npmrc //linux用cat,window用type

此時我們可以看到當我們使用npm下載包時候辨宠,鏡像源是npmjs.org. 所以我們使用命令將下載源的地址切換到我們到服務(wù)器

npm set registry 172.29.xx.39:4873 

2.2 安裝nrm

nrm是 npm registry 管理工具, 能夠查看(nrm ls)和切換(nrm use xx)當前使用的registry。不安裝也可以货裹,安裝會更高效嗤形。

npm install -g nrm

2.3 添加自己服務(wù)器到地址到nrm

這里為了方便,我給自己服務(wù)器到地址取了一個別名弧圆,為了使用和切換更方便

nrm add my39 http://172.29.xx.39:4873 

這里你可以查看當前有哪些下載源:

nrm ls
image.png

將npm包的下載地址改到my39的私服

nrm use my39

關(guān)于nrm
其實nrm只是個npm registry 管理工具派殷,有了它可以讓我們切換和查看registry 地址更方便快捷,即便沒有它墓阀,我們直接用npm的set命令也可以切換地址毡惜,用cat命令也可以查看地址,只不過用nrm更便捷斯撮,用不用隨你了经伙,覺得方便就用。

2.4 發(fā)布包

在桌面新建一個HelloWorld文件夾勿锅,里面放如index.js和README.md,然后打開命令行帕膜,切換到HelloWorld文件目錄下

npm init 

根據(jù)提示填寫,會自動生成一個package.json文件
到這里就可以使用npm publish 命令來發(fā)布包了

npm publish // 在服務(wù)器地址的情況下
npm publish --registry http://172.29.xx.39:4873 //在客戶端的情況下溢十,直接加后綴發(fā)布到私服

如果你在客戶端未登錄到情況下垮刹,它會給你提示讓你去登錄

npm login

輸入用戶名、密碼张弛、郵箱荒典,然后再執(zhí)行:

npm publish --registry http://172.29.xx.39:4873

2.5 驗證能否下載

image.png

最后

當我們執(zhí)行npm install的時候,它是根據(jù)當前定位文件夾下package.json文件去下載包吞鸭,包括間接依賴的包第一次下載之后的包都會緩存在我們的私服上寺董,然后后期下載的時候從私服下載,就不會再從npmjs上下載包刻剥,但是它下載每個包的時候都會再走一遍npmjs去檢查包的版本遮咖,即便不下載資源,但這無疑也浪費了時間造虏。經(jīng)驗證發(fā)現(xiàn)御吞,我們的package-lock.json文件在此刻起了大作用,因為package-lock.json文件本來就是更新node庫后自動生成的文件漓藕,里面包含了node庫中所有包的下載地址當前版本以及包之間的依賴關(guān)系陶珠,既然package-lock.json穩(wěn)定了版本,所以當我們項目中包含了這個文件時撵术,我們下包時就會根據(jù)package-lock.json的穩(wěn)定版本來背率,就不會再去npmjs上去檢查了话瞧,這樣會極大的提升下載包的速度嫩与。所以項目中一定要有穩(wěn)定的package.json和package-lock.json文件寝姿,并及時更新這兩個文件

注意:如果我們在項目中用了npm-shrinkwrap.json這個文件來鎖定版本,我們在安裝包的時候可能會報錯Maximum call stack size exceeded划滋。

解決方案:
1饵筑、刪除npm-shrinkwrap.jsonyarn.lock
2、刪除node_modules

sudo rm -rf node_modules

3处坪、重新安裝包,生成package-lock.json文件

sudo npm install

成功之后根资,你會看到package-lock.json中鎖定的下載地址都是我們私服上的地址

尊重原創(chuàng),我只是在基礎(chǔ)添加了一點自己踩的坑同窘,然后自己做個記錄~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玄帕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子想邦,更是在濱河造成了極大的恐慌裤纹,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丧没,死亡現(xiàn)場離奇詭異鹰椒,居然都是意外死亡,警方通過查閱死者的電腦和手機呕童,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門漆际,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夺饲,你說我怎么就攤上這事奸汇。” “怎么了往声?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵茫蛹,是天一觀的道長。 經(jīng)常有香客問我烁挟,道長婴洼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任撼嗓,我火速辦了婚禮柬采,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘且警。我一直安慰自己粉捻,他們只是感情好,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布斑芜。 她就那樣靜靜地躺著肩刃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盈包,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天沸呐,我揣著相機與錄音,去河邊找鬼呢燥。 笑死崭添,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的叛氨。 我是一名探鬼主播呼渣,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寞埠!你這毒婦竟也來了屁置?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤仁连,失蹤者是張志新(化名)和其女友劉穎缰犁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怖糊,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡帅容,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了伍伤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片并徘。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扰魂,靈堂內(nèi)的尸體忽然破棺而出麦乞,到底是詐尸還是另有隱情,我是刑警寧澤劝评,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布姐直,位于F島的核電站,受9級特大地震影響蒋畜,放射性物質(zhì)發(fā)生泄漏声畏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一姻成、第九天 我趴在偏房一處隱蔽的房頂上張望插龄。 院中可真熱鬧,春花似錦科展、人聲如沸均牢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徘跪。三九已至甘邀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間垮庐,已是汗流浹背松邪。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留突硝,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓置济,卻偏偏與公主長得像解恰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子浙于,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354