嘗試自己搭建服務太過複雜,而且要將整個npm庫鏡像下來是不可能的,於是想到使用緩存的辦法。
所有的包全局安裝,設置不從服務器獲取包,這樣 npm install 也可以正常使用。
- 在外網機器上新建項目引用內網中需要包
- npm install -g
- 輸入命令npm config get cache查看緩存目錄位置
- C:\Users\hongpu\AppData\Roaming\npm-cache 拷貝npm緩存,npm-cache文件打包,通過光盤複製替換內網機器npm-cache文件夾。
- 內網機器上執行:npm install --cache ./npm-cache --optional --cache-min 99999999999 --shrinkwrap false jquery 或者 npm install --cache ./npm-cache --optional --cache-min 99999999999 --shrinkwrap false
外網創建一個簡化的項目,包全局安裝,所有包都安裝完後,打包npm-cache文件夾,複製到內網機器上。
npm-cache文件夾中文件已經打包爲tgz文件,所以不用考慮windows長路徑問題。
參考:node_modules 在沒有網絡的情況下如何離線安裝
前言
鑑於最近的幾起數據泄露事件,公司決定所有開發工作必須在內網中進行,隔絕外網,避免代碼和數據泄露。但前端開發不可避免引用大量的JS庫,於是嘗試下載所有的依賴包,拷入內網中,再進行開發。
網上查到有:npm、cnpm、verdaccio、kappa和sinopia等多種搭建方法。
技術背景
NPM:(node package manager),通常稱爲node包管理器,主要功能就是管理node包,包括:安裝、卸載、更新、查看、搜索、發佈等。NPM是基於couchdb一個數據庫,詳細記錄了每個包的信息(作者、版本、依賴、授權信息等)。
cnpm:是企業內部搭建npm鏡像和私有npm倉庫的開源方案。它同時解決了現有npm架構的一些問題。
Kappa是由eBay創建的一個基於npm-delegate和hapi的npm代理,通過kappa我們不需要複製整個公共的倉庫數據就能創建自己的私有倉庫。
Sinopia: 是一個零配置的私有的帶緩存功能的npm包管理工具,作者是是rlidwka,使用sinopia,你不用安裝CouchDB或MYSQL之類的數據庫,Sinopia有自己數據庫,如果要下載的包不存在,它將自動去你配置的npm地址上去下載,而且硬盤中只緩存你下載過的包,以節省空間。
Verdaccio:由於sinopia的2015年10月後停止對sinopia的維護和升級,所以出來了一個sinopia的fork,名字叫做Verdaccio,然後由Verdaccio繼續對sinopia進行更新和維護,具體如何使用Verdaccio來構建私有npm服務器,請見Verdaccio的github介紹。
Apache CouchDB:是一個開源數據庫,專注於易用性和成爲"完全擁抱web的數據庫"。它是一個使用JSON作爲存儲格式,JavaScript作爲查詢語言,MapReduce和HTTP作爲API的NoSQL數據庫。其中一個顯著的功能就是多主複製。CouchDB的第一個版本發佈在2005年,在2008年成爲了Apache的項目。