1. 程式人生 > >企業CNPM私有倉庫、元件庫實現方案

企業CNPM私有倉庫、元件庫實現方案

一、為什麼要使用元件抽離,外部安裝的方法,多處呼叫的方法?

     方便快捷,面向未來式開發,提高效率,避免冗餘,提升專案質量,多專案可以同時使用,不用多次重複開發。在團隊內部搭建私有倉庫,方便團隊內部成員程式碼的共用,不寫重複而有無意義的程式碼。

二、元件庫的生態圈需要哪些?

(1)vue-cli 3.x
(2)vue + webpack
(3)npm 包管理工具
(4)vue元件庫、vue元件庫文件
 
通過配置webpack,npm publish 釋出

三、npm包管理工具選擇,開源或者私有?

(1)  開源:
1-1.直接使用官方npm倉庫,免費託管在官方的伺服器上
1-2.把專案釋出到npm社群的倉庫,開源交流

(2)  私有:
2-1. 私有包託管在內部伺服器或者單獨的伺服器上;
2-2. 可以同步整個官方倉庫,也可以只同步需要的;
2-3. 下載的時候,可以讓公共包走公共倉庫,私有包走私有倉庫;
2-4. 可以快取下載過的包,對於下載,釋出,有對應的許可權管理。

四、為什麼要實現私有化?

npm 是 Node 的模組管理器, 功能非常強大. npm 安裝公有模組非常簡單, 直接一個命令 npm install 模組名字 可以了, 之所以可以這樣安裝, 是因為模組直接釋出在 npm 的公有倉庫裡的 ( npm publish ) , npm 直接從倉庫通過網路獲取到就好. 但是, 有時候我們不希望把程式碼直接釋出到公有倉庫中, 對於企業來說, 內部的非開源模組肯定是不需要釋出到公有倉庫中的. 所以我們就要尋找一種可以讓 npm 安裝私有模組的辦法。

五、實現是私有庫的方法:

(1)購買付費私有倉庫(最簡單快捷,每月7美元)
(2)搭建npm倉庫(獨立伺服器,需要構成成本,和額外的伺服器機器)
(3)利用npm的安裝機制和git倉庫( npm instal 支援 npm install <git remote url> 方式,注意:必須確保安裝這個私有模組的機器有訪問這個私有模組的 git 倉庫的許可權)
(4)gitlab 私有模組方案( 經測試多次安裝報錯,某些不同的程式碼會影響安裝 )
釋出私有模組只需直接把程式碼 push 到 gitlab 倉庫, 而安裝私有模組的命令git+ssh://[email protected]

:Username/Repository#{branch|tag} . 可以通過#後面的branch 和 tag 來進行版本控制.


六、如何分離打包元件庫更新到npm包管理倉庫?

1. 單獨元件庫模式開發下,選擇webpack配置元件打包環境
參考原始碼:https://github.com/frankxjkuang/custom-ui 
優點:配置簡單、開發快捷、可擴充套件性高、可單獨分離元件庫到git倉庫
缺點:不能在同項目下同時開發元件和文件、需要分離專案開發

2. 基於VUE-CLI3開發
參考原始碼:https://github.com/VV-UI/VV-UI
優點:配置完善、多人協作開發、擴充套件性高、可同時開發和釋出文件和元件庫
缺點:釋出npm包管理配置難度較大、更新元件庫不好分離元件庫和npm包到git倉庫

3.開發流程:(與專案開發流程基本一致)
構建,開發,測試,打包壓縮、上線、更新


七、區域網如何實現公司內部NPM包管理庫伺服器搭建?

1.採用CNPM淘寶映象搭建科盾內部私有倉庫伺服器(推薦)

(1)環境搭建參考文件:https://blog.csdn.net/zjwengyidong/article/details/73274864
(2)需要環境:node 、npm、PM2程序管理器、mysql(推薦)、稍大儲存空間的伺服器
(3)已部署測試可以通過:


2.通過verdaccio搭建( 輕量級的私有npm代理註冊工具,Sinopia已經淘汰,故選擇verdaccio )
(1)環境搭建參考文件:https://www.cnblogs.com/tugenhua0707/p/9163167.html
(2)環境部署:node、npm 、verdaccio、pm2
(3)已部署測試可通過:

  

3.Git倉庫當作內部私有的NPM庫(還未測試,需要用公司gitlib測試)


八、元件庫文件DEMO展示

(1)前端元件庫文件DEMO演示:
   https://riverscoder.github.io/npm-sources/dist/index.html

(2)前端元件庫原始碼CODE:
    https://github.com/RiversCoder/npm-sources/tree/gh-pages

(3)前端npm元件包:
    https://www.npmjs.com/package/kedun-ui


十、參考資料:

1.https://sevody.github.io/2016/12/02/implement-private-npm-module-through-gitlab/
2.https://www.jianshu.com/p/3724b081e8e8
3.https://github.com/VV-UI/VV-UI
4.https://juejin.im/post/5a386b0d6fb9a0450f220c59
5.https://www.jianshu.com/p/93d43911f91e
6.https://juejin.im/entry/59264bf7a0bb9f0057c2298d
7.https://github.com/frankxjkuang/custom-ui
8.https://my.oschina.net/qiangdada/blog/1637920
9.https://www.jianshu.com/p/43f02ca12657
10.https://github.com/iview/iview
11.https://github.com/ElemeFE/element
12.https://github.com/jaywcjlove/handbook/blob/master/CentOS/在5分鐘內搭建企業內部私有npm倉庫.md#安裝