經過上網查找,選型,最終選定了verdaccio來搭建,由於能夠不用本身搞數據庫,並且很方便,不須要搞麻煩的配置就能夠搭建成功。html
Verdaccio是一個簡單的,零配置所需的本地私有npm註冊表。不須要整個數據庫就能夠開始使用!Verdaccio開箱即用,擁有本身的小型數據庫,可以代理其餘註冊表(例如npmjs.org),一路緩存下載的模塊。node
$ npm install --global verdaccio
我當前用的版本是verdaccio 3.8.6python
安裝後的文件在:C:\Users\(用戶名)\AppData\Roaming\verdaccio下 git
#設置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
$ verdaccio
數據庫
$ npm adduser --registry http://localhost:4873
而後咱們在http://localhost:4873/上面直接點Login就能夠登錄了npm
這裏,若是咱們已經裝了nrm ,能夠簡便上面這句操做:咱們直接利用nrm把鏡像源切換到咱們的http://localhost:4873/上面,而後$ npm adduser
就能夠了json
$ npm install -g nrm
全局安裝nrm$ nrm ls
用來查看npm源
名稱前有* 的是當前用npm下載包的時候的地址,好比截圖裏面,當我npm install
之後,就會從http://localhost:4873/上面下載包,而不是從npm網站上面下載$ nrm use 源名稱
設置當前npm源
這裏我就把npm源換成了npmjs,固然我們安裝node之後,npm默認就是從這裏下載。$ nrm add 名稱 地址
建立新的源
$ nrm del 名稱
刪除源
$ nrm
全均可以查看
$ npm publish --registry http://localhost:4873
這裏我隨便新建一個文件夾,經過npm init新建一個項目,而後在這個目錄下,npm publish --registry http://localhost:4873
緩存
一直寫到這裏,這一步纔是我最想要的,由於個人目的就是爲了把我須要用到的包放到內網,直接從內網下載。 咱們如何把包放到搭好的verdaccio裏面呢?這裏我畫了一個簡單的流程
流程也許不對,我也不知道沒有對應的包是從uplinks上面下載到storage裏面,再從storage下載到項目中,仍是從uplinks下載到項目中,同時也下載到storage裏面。 不論是那種方式, 總之就是verdaccio裏面沒有對應的包的話,就會找到uplinks,而後從uplinks對應的網站下載一份到verdaccio裏面,之後再下載一樣的包的話,verdaccio裏面有就直接從verdaccio裏面下載,而不會去從uplinks裏面再下載了。npm init
了一個新項目了。咱們把package.json裏面寫上咱們須要的包,下載看一下。
咱們能夠看到下載包的狀況 不成功的話,會有500錯誤
完成之後,咱們會看見storage裏面咱們須要的包都下好了。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緩存再下載啊!!!!!!!!!!!!!!!!!
放到內網的話,就把verdaccio這些東西都拷進去把~ 大功告成~
$ npm cache clear -f
清一下npm緩存在下!!!!!!!!!否則極可能storage裏面的包不全,會報error: internal erver error
和 uplink is offline
的錯誤。npm 私服工具verdaccio 搭建(一) (ps:欲使用sinopia搭建私服的必定要看過來)
npm 私服工具verdaccio 搭建(二) (ps:欲使用sinopia搭建私服的必定要看過來)
npm私服工具verdaccio配置文件config.yaml詳解(同sinopia配置文件)
完美解決Cannot download "https://github.com/sass/node-sass/releases/download/binding.nod的問題