為什么要共享組件? 都2019年了...還ctrl+c > ctrl+v,多處維護嗎?
為什么要搭私有源? 公司代碼扔到github/npm官方源上不好吧...有的小伙伴cnpm,有的小伙伴npm ,安裝有的能安裝上有的安裝不上吧...打包機/docker 每次npm install 慢不慢?
怎么才能優(yōu)雅的開發(fā)、使用、共享 前端組件、前端代碼
場景:
A-git倉庫里面有個 日歷組件,可以給B-git倉庫使用
git子倉庫
: 沒有版本,更新麻煩,要加配置
github + npm公有源
: 公司代碼扔到外網(wǎng)去,有暴露敏感信息的風險,且npm一旦發(fā)布就只能通過 郵件方式撤銷
gitlab+ npm私有源
:gitlab是內(nèi)網(wǎng)自己的,還有個能發(fā)布的私有源,對于持續(xù)集成方面,還有更棒的優(yōu)勢,對比一下,就立判高下了
為什么要用私有源
- 加速公有npm包安裝速度
- 避免本地 npm install 指向源 還要翻墻處理,避免cnpm等其他源拉取npm包不及時的問題
- 私有源會把已經(jīng)使用的npm包緩存下來,提升個人本地/打包環(huán)境npm包的安裝速度
- 會先從官方源 獲取再緩存在私有源服務(wù)器上,私有源始終走私有源儲存
- 私有源包含一些 自主開發(fā)的公共包,可以在多個 git倉庫 項目中 通過npm的方式使用
- 把公共代碼上傳到 私有源,而不是上傳到github,避免公司代碼及敏感信息的暴露,如果有開源需求,再走開源流程
- A倉庫 封裝了一個 video組件,想給B倉庫使用。那就可以制作一個 video組件倉庫,然后發(fā)布到 私有源上。A和B倉庫使用的時候就 npm install 組件庫,let api = require('組件庫') 啦~ 這個步驟和 發(fā)公有npm包是一模一樣的,只是發(fā)的位置不一樣而已。
準備工作
- https://verdaccio.org/docs/zh-CN/authentification按照這個一步一步來就行
- 如果是本地電腦 不需要改
verdaccio的 config.yaml
配置文件,如果是服務(wù)器部署,那你需要改config.yaml
的配置 - 我們這里按服務(wù)器部署為例子
- 你需要先安裝上 node npm pm2
npm install -g verdaccio
- 創(chuàng)建一個 非root的賬戶
- 在此賬戶下 執(zhí)行verdaccio,且找到 config.yaml文件,
- vim 修改 config.yaml,新增一行,保存
listen:
0.0.0.0:4873 # listen on all addresses (INADDR_ANY)
- verdaccio 跑一下,顯示一下內(nèi)容就正常了
齊活~
日常使用 -- 切換npm源
- 打開命令行工具
- 安裝npm切換源的快捷工具 npm/nrm:
npm install -g nrm
- 輸入命令: nrm ls
- 輸入命令: nrm add 源名字 源地址
- 輸入命令: nrm use 源名字
- 輸入命令: nrm ls
- 當時源指向哪里,前面就有個小星星
nrm切換私有源
日常使用 -- 添加私有源用戶
確保你的npm源指向為 你的私有源
輸入命令: npm adduser
輸入username: 郵箱前綴
輸入password: 自定義密碼
輸入Email:郵箱
- 添加私有源用戶
注冊好賬號,才能上傳 npm包
對于開發(fā)者,除了注冊賬號是根據(jù) 私有源創(chuàng)建的,和官方源賬號不同,其余操作都是相同的比如:在你項目的根目錄,輸入 npm publish ,提示發(fā)布成功/失敗等
對于使用者,使用的時候,npm源 指向 私有源 npm install 包名 即可 ,和正常使用無任何差異
結(jié)束
至此 就都搞定啦。
無論團隊的開發(fā)者/使用者來說,只要把 nrm的源指向為 自己的私有源就OK了。
verdaccio通過代理的形式,把你的私有包 和 官方包 切分開。
verdaccio的代理模式
如果有發(fā)布了包到私有源,你的私有源web頁 就是這樣的~
私有源web頁
私有源詳情頁