超簡單的npm私有庫搭建——verdaccio

目的

  • 在內網中搭建npm私有庫,裏面只放項目須要的包,並不須要同步npm上面全部的包
  • 能夠發佈本身的包

經過上網查找,選型,最終選定了verdaccio來搭建,由於能夠不用本身搞數據庫,並且很方便,不須要搞麻煩的配置就能夠搭建成功。html

介紹

Verdaccio是一個簡單的,零配置所需的本地私有npm註冊表。不須要整個數據庫就能夠開始使用!Verdaccio開箱即用,擁有本身的小型數據庫,可以代理其餘註冊表(例如npmjs.org),一路緩存下載的模塊。node

前期準備

  • 一個能夠上互聯網的電腦
  • npm(我搭建的時候用的Node版本是8.12.0,npm版本是6.4.1)
  • nrm(非必須,可是有了這個會省事兒不少)
  • pm2(非必需,這篇文章裏面沒有涉及,能夠在參考文章的第二篇文章裏面找到)

搭建過程

1 安裝verdaccio

$ npm install --global verdaccio 我當前用的版本是verdaccio 3.8.6python

1.1 verdaccio目錄結構

安裝後的文件在:C:\Users\(用戶名)\AppData\Roaming\verdaccio下 git

目錄結構

1.2 配置文件

#設置NPM包的存放目錄
storage: ./storage
#配置WEB UI界面
web :
  title : ‘搭建私有NPM’
  #logo : logo.png
#設置用戶驗證的文件。
auth:
  htpasswd:
  file: ./htpasswd
  max_users: 1000 #默認爲1000,改成-1,禁止註冊
#設置其它的npm註冊源(registry)
uplinks:
  npmjs:
  url: https://registry.npmjs.org/
#配置權限管理
packages:
   ‘@/’:
  #表示哪一類用戶能夠對匹配的項目進行安裝 【$all 表示全部人均可以執行對應的操做,$authenticated 表示只有經過驗證的人能夠執行對應操做,$anonymous 表示只有匿名者能夠進行對應操做(一般無用)】
  access: $all
  #表示哪一類用戶能夠對匹配的項目進行發佈
  publish: $authenticated
‘*’:
  #表示哪一類用戶能夠對匹配的項目進行安裝
  access: $all
  #表示哪一類用戶能夠對匹配的項目進行發佈
  publish: $authenticated
  # 若是一個npm包不存在,它會去詢問設置的代理。
  proxy: npmjs
#日誌輸出設置
logs:
   -{type: stdout, format: pretty, level: http}
  #-{type: file, path: verdaccio.log, level: info}
#修改監聽的端口
listen: 0.0.0.0:4873github

修改完了配置,到verdaccio目錄下經過$ verdaccio -c config.yaml更新一下web

2 啓動

$ verdaccio 數據庫

啓動成功
直接打開 http://localhost:4873/
開始頁

3 建立用戶

$ npm adduser --registry http://localhost:4873 而後咱們在http://localhost:4873/上面直接點Login就能夠登錄了npm

這裏,若是咱們已經裝了nrm ,能夠簡便上面這句操做:咱們直接利用nrm把鏡像源切換到咱們的http://localhost:4873/上面,而後$ npm adduser就能夠了json

nrm操做方法
  • $ npm install -g nrm 全局安裝nrm
  • $ nrm ls 用來查看npm源
    nrm ls
    名稱前有* 的是當前用npm下載包的時候的地址,好比截圖裏面,當我npm install之後,就會從http://localhost:4873/上面下載包,而不是從npm網站上面下載
  • $ nrm use 源名稱 設置當前npm源
    nrm use
    這裏我就把npm源換成了npmjs,固然我們安裝node之後,npm默認就是從這裏下載。
  • $ nrm add 名稱 地址 建立新的源
    nrm add
  • $ nrm del 名稱 刪除源
    nrm del
  • 這些記不住都不要緊,直接$ nrm全均可以查看
    $nrm

4 發佈包

$ npm publish --registry http://localhost:4873 這裏我隨便新建一個文件夾,經過npm init新建一個項目,而後在這個目錄下,npm publish --registry http://localhost:4873 緩存

npm init
此時,文件裏面有了package.json
package.json
npm publish
發佈成功

5 同步項目所須要的包到verdaccio中

一直寫到這裏,這一步纔是我最想要的,由於個人目的就是爲了把我須要用到的包放到內網,直接從內網下載。 咱們如何把包放到搭好的verdaccio裏面呢?這裏我畫了一個簡單的流程

同步流程
流程也許不對,我也不知道沒有對應的包是從uplinks上面下載到storage裏面,再從storage下載到項目中,仍是從uplinks下載到項目中,同時也下載到storage裏面。 不論是那種方式, 總之就是verdaccio裏面沒有對應的包的話,就會找到uplinks,而後從uplinks對應的網站下載一份到verdaccio裏面,之後再下載一樣的包的話,verdaccio裏面有就直接從verdaccio裏面下載,而不會去從uplinks裏面再下載了。

  • 剛纔咱們已經npm init了一個新項目了。咱們把package.json裏面寫上咱們須要的包,下載看一下。
    在這裏插入圖片描述
    咱們能夠看到下載包的狀況 不成功的話,會有500錯誤
    在這裏插入圖片描述
    完成之後,咱們會看見storage裏面咱們須要的包都下好了。

node-sass的坑:

       node-sass我用4.10.0的話,會報關於python.exe的錯誤,而後就失敗了,我把package.json裏面"node-sass":"^4.9.3" 改爲了"node-sass":"4.9.3",只用4.9.3版本就行了;        部署到內網之後,4.9.3仍是出了問題,它回去npmjs.org上面找win32-x64-57\binding.node,解決方法是從有外網的電腦裏面把C:\Users\Acer\AppData\Roaming\npm-cache\node-sass\4.9.3裏的win32-x64-57_binding.node拷出來,放到須要npm install的電腦裏面,而後新建系統變量SASS_BINARY_PATH,變量值C:\Users(用用戶名)\AppData\Roaming\npm-cache\node-sass\4.7.2\win32-x64-59_binding.node,再從服務器npm install下載node-sass包就行了。

在這裏插入圖片描述
而後你們能夠把網斷掉,刪掉node_modules從新下載一次。 下載以前記得$ npm cache clear -f清一下npm緩存再下載啊!!!!!!!!!!!!!!!!!

把vardaccio放到內網

放到內網的話,就把verdaccio這些東西都拷進去把~ 大功告成~

注意:要放到內網的話,下載包的時候必定要先$ npm cache clear -f清一下npm緩存在下!!!!!!!!!否則極可能storage裏面的包不全,會報error: internal erver erroruplink is offline的錯誤。

參考文檔

verdaccio官網

npm 私服工具verdaccio 搭建(一) (ps:欲使用sinopia搭建私服的必定要看過來)

npm 私服工具verdaccio 搭建(二) (ps:欲使用sinopia搭建私服的必定要看過來)

npm私服工具verdaccio配置文件config.yaml詳解(同sinopia配置文件)

搭建離線npm私庫——verdaccio

NodeJS學習:搭建私有NPM

完美解決Cannot download "https://github.com/sass/node-sass/releases/download/binding.nod的問題

相關文章
相關標籤/搜索