使用verdaccio搭建npm私服倉庫

為什么需要搭建私有 npm


-搭建公司內(nèi)部中臺(tái)做鋪墊,代碼屬于公司資產(chǎn)
-團(tuán)隊(duì)內(nèi)部使用一些待完善package半成品
-內(nèi)部使用更安全
-下載package更快,權(quán)限可配置


包管理的私服工具選型

maven:更偏向后臺(tái)使用
cnpm: 需要安裝MySQL,配置比較麻煩
Verdaccio 是一個(gè) Node.js創(chuàng)建的輕量的私有 npm proxy registry, forked 于 sinopia@1.4.0
1.與 yarn, npm 和 pnpm 100% 兼容
2.提供 Docker 和 Kubernetes 支持,相當(dāng)容易安裝和使用
3.發(fā)布的包是私有的并且訪問權(quán)限可配置
4.Verdaccio 按需要緩存所有相關(guān)項(xiàng),并在當(dāng)?shù)鼗蛩接芯W(wǎng)絡(luò)下可以加速安裝

服務(wù)器搭建


1.安裝node
2.安裝verdaccio
npm install -g verdaccio --unsafe-perm

加上--unsafe-perm選項(xiàng)是為了防止gyp ERR! permission denied權(quán)限問題報(bào)錯(cuò)

3.啟動(dòng)verdaccio
verdaccio

執(zhí)行結(jié)果如下:

[root@webserver ~]# verdaccio
*** WARNING: Verdaccio doesn't need superuser privileges. Don't run it under root! ***
 warn --- config file  - /root/.config/verdaccio/config.yaml
 warn --- Verdaccio started
 warn --- Plugin successfully loaded: verdaccio-htpasswd
 warn --- Plugin successfully loaded: verdaccio-audit
 warn --- http address - http://localhost:4873/ - verdaccio/4.10.0

從控制臺(tái)的輸出,我們可以看到:
verdaccio的配置文件路徑在/root/.config/verdaccio/config.yaml和默認(rèn)訪問地址http://localhost:4873/
在配置文件末尾增加listen: 0.0.0.0:4873保存

# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873

查看修改配置文件

// 進(jìn)入verdaccio目錄
[root@webserver ~]# cd /root/.config/verdaccio/
[root@webserver verdaccio]# ls
config.yaml  storage
-- 查看該目錄下的文件,該目錄下默認(rèn)有兩個(gè)文件:config.yaml和storage,添加用戶之后會(huì)自動(dòng)創(chuàng)建htpasswd

// 查看配置文件
[root@webserver ~]# vim config.yaml

verdaccio默認(rèn)配置

storage: ./storage
auth:
  htpasswd:
    file: ./htpasswd
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs
  '**':
    proxy: npmjs
logs:
  - {type: stdout, format: pretty, level: http}

在配置文件config.yaml末尾加入代碼:

# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873
配置

在當(dāng)前用戶的 .config/verdaccio 下默認(rèn)有兩個(gè)文件:config.yaml 和 htpasswd。這里介紹兩個(gè)比較重要的配置項(xiàng),其他的可以官網(wǎng)上查詢。

  • htpasswd
    這個(gè)文件需要?jiǎng)?chuàng)建了賬號(hào)才會(huì)出現(xiàn)在當(dāng)前目錄
npm adduser --registry http://localhost:4873
Username: xxx
Password:
Email: (this IS public) xxx@xxx.com
Logged in as slweb on http://localhost:4873/. #看到這個(gè)代表成功了
[root@webserver verdaccio]# ls
config.yaml  htpasswd  storage
#這時(shí)就出現(xiàn)了htpasswd。然后修改vim config.yaml
[root@webserver verdaccio]# vim config.yaml
auth:
  htpasswd:
    file: ./htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    # max_users: 1000
    max_users: -1  # 禁止注冊(cè)

下面將使用插件注冊(cè)

[root@webserver verdaccio]# sinopia-adduser
username:

注冊(cè)成功

[root@webserver verdaccio]# cat htpasswd
slweb:xxxOkg:autocreated 2020-12-23T08:36:36.974Z
slweb:{SHA}xxxqUE=:autocreated 2020-12-23T08:37:50.637Z
  • url可以配置成淘寶鏡像地址:https://registry.npmjs.org/
  • 權(quán)限配置(一般團(tuán)隊(duì)或者公司的私有項(xiàng)目,會(huì)采用不同的權(quán)限控制。)
    操作權(quán)限:
  • access 表示哪一類用戶可以對(duì)匹配的項(xiàng)目進(jìn)行安裝(install)
  • publish 表示哪一類用戶可以對(duì)匹配的項(xiàng)目進(jìn)行發(fā)布(publish)
  • proxy 如其名,這里的值是對(duì)應(yīng)于 uplinks 的
    組權(quán)限:
  • all 表示所有人都可以執(zhí)行對(duì)應(yīng)的操作
  • authenticated 表示只有通過驗(yàn)證的人可以執(zhí)行對(duì)應(yīng)操作
  • anonymous 表示只有匿名者可以進(jìn)行對(duì)應(yīng)操作(通常無用)
    例子:
packages:
  # scoped 包
  '@scope/*':
    access: $all
    publish: $all
    proxy: server2
    
  'supersecret-*':
    # 添加多個(gè)組
    access: secret super-secret-area ultra-secret-area
    publish: secret ultra-secret-area
    proxy: server1

  'private-*':
     # private-xxx 允許所有的用戶安裝、認(rèn)證的用戶發(fā)布
    access: $all
    publish: $authenticated
    proxy: uplink1
    
  'old-*':  # 不設(shè)置 `access`、`publish` 阻止對(duì)一組包的訪問(不設(shè)置proxy阻止代理一組特定包)

  '**':
    # 允許所有用戶 (包括為驗(yàn)證的用戶) 安裝和發(fā)布
    access: $all
    publish: $all
    proxy: uplink2

設(shè)置權(quán)限賬號(hào)(安裝插件完成)

npm install htpasswd-for-sinopia -g
4.使用pm2啟動(dòng)verdaccio

安裝pm2

npm install -g pm2 --unsafe-perm

使用pm2啟動(dòng)verdaccio,以保證進(jìn)程一直處于打開狀態(tài)

pm2 start verdaccio
5、訪問搭建好的私有倉庫

在瀏覽器中打開http://47.107.60.51:4873 鏈接

注意:在阿里云服務(wù)器添加安全組,開放 4873 端口號(hào),如果沒有添加該端口安全組則不能在瀏覽器正常訪問http://47.107.60.51:4873

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,024評(píng)論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,285評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,328評(píng)論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,878評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評(píng)論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,098評(píng)論 0 286
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,616評(píng)論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,554評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,725評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評(píng)論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,971評(píng)論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評(píng)論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,339評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,695評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容