title: 何處安放你那垃圾的封裝代碼衰粹?自建npm倉(cāng)庫(kù)萬(wàn)事不求人
category: Web
tag: npm
date: 2019-07-14
主標(biāo)題:何處安放你那垃圾的封裝代碼议谷?自建npm倉(cāng)庫(kù)萬(wàn)事不求人
副標(biāo)題:如何把你那丟人的代碼塊放到自建npm倉(cāng)庫(kù)里
副標(biāo)題:自建npm倉(cāng)庫(kù)
緣起
在前幾篇文章中提到飛冰ice不支持私有倉(cāng)庫(kù),沒(méi)辦法成為我的代碼素材庫(kù)憋活,我反饋給飛冰團(tuán)隊(duì)之后污淋,隔了一天,大周末的就新增了對(duì)私有npm倉(cāng)庫(kù)和自有cdn的支持余掖,之前顧慮npm發(fā)包太公開寸爆,cdn訪問(wèn)太慢的問(wèn)題迎刃而解。
飛冰團(tuán)隊(duì)給力盐欺!:ox::beer:
這篇文章就說(shuō)說(shuō)怎么(低成本省時(shí)省力不重復(fù)造輪子地)自建私有npm倉(cāng)庫(kù)赁豆。我那丟人現(xiàn)眼的垃圾代碼就不拿出去霍霍人了。
我們?yōu)槭裁匆越╪pm冗美?一個(gè)是保護(hù)私有代碼魔种,另一個(gè)就是從局域網(wǎng)取文件速度快。
私有npm粉洼,發(fā)包更省心节预。
自建私有倉(cāng)庫(kù),目前有幾個(gè)選擇属韧,一個(gè)是sinopia 一個(gè)是 cnpmjs.org安拟,我先知道的cnpmjs.org
那就先看這個(gè)。
cnpmjs.org
這個(gè)包名字很有特點(diǎn)宵喂,是個(gè)網(wǎng)址糠赦,國(guó)人首選的cnpm
就是用的這個(gè)搭的:
當(dāng)前 npm.taobao.org 運(yùn)行版本是: cnpmjs.org@3.0.0-rc.27
我們可以通過(guò)下載或者fork使用這個(gè)包。這個(gè)包會(huì)優(yōu)先使用本地的包锅棕,沒(méi)有就使用cnpm的包拙泽,下次速度有保證。下載完會(huì)自動(dòng) sync同步裸燎,下次下載就從緩存里拿顾瞻。
cnpmjs.org 自建過(guò)程
前置條件
沒(méi)啥準(zhǔn)備條件,電腦有網(wǎng)就行德绿。
數(shù)據(jù)庫(kù)有也行荷荤,沒(méi)有也行,提供 mysql 和 sqllite 等數(shù)據(jù)庫(kù)支持脆炎。
我有一個(gè)現(xiàn)成的數(shù)據(jù)庫(kù):本地端口3306的 mysql梅猿。
安裝 cnpmjs.org
需要先安裝這個(gè)包,拿到源代碼秒裕。
npm i -g cnpmjs.org
cnpmjs.org -V #2019-07-14的版本是 2.19.4
修改配置文件
不同系統(tǒng)袱蚓,配置文件路徑不太一樣。
Windows
C:\Users\zhongda\AppData\Roaming\npm\node_modules\cnpmjs.org\config\index.js
Mac
cnpmjs.org 默認(rèn)安裝路徑:/usr/local/lib/node_modules/cnpmjs.org\index.js
nvm
如果你使用 nvm几蜻,安裝路徑在這:~/.nvm/versions/node/v10.15.3/lib/node_modules/cnpmjs.org/config/index.js
修改并注意以下內(nèi)容:
bindingHost: '0.0.0.0' 允許局域網(wǎng)訪問(wèn)
enableCompress: true 啟用gzip壓縮喇潘,很奇怪為什么默認(rèn)關(guān)閉
admins 這里填入管理者的信息体斩,方便后續(xù)鑒權(quán)
database 數(shù)據(jù)庫(kù),有就寫颖低,沒(méi)有就使用 sqlite絮吵,如果要使用sqlite記得全局安裝sqlite
nfs 包存到哪,默認(rèn)是數(shù)據(jù)目錄 nfs 下面忱屑,這個(gè)魔改一下發(fā)到cdn上也不是不行蹬敲,目前還不用
registryHost:'' 注意這里先留空,模塊訪問(wèn)域名莺戒。如果你下載模塊報(bào)錯(cuò)就是這個(gè)的鍋
scopes 包前綴伴嗡,比如 @babel/cli 這樣的,多點(diǎn)命名空間
syncModel exist 只同步緩存用到的包从铲。這玩意吃硬盤空間瘪校,我看了一下快10個(gè)g了,拿空間換時(shí)間
npmClientName 通過(guò)什么客戶端拉取名段,默認(rèn)cnpm
創(chuàng)建數(shù)據(jù)庫(kù)并導(dǎo)表
以下參考的是https://zhuanlan.zhihu.com/p/35773211
進(jìn)入數(shù)據(jù)庫(kù)
mysql -uroot -p
create database cnpmjs; # 創(chuàng)建數(shù)據(jù)庫(kù)
use cnpmjs;
source ~/xx/docs/db.sql; # 這個(gè)在配置文件附近的文件夾
完事會(huì)創(chuàng)建大概14個(gè)表阱扬。
啟動(dòng)
cnpmjs.org start
打開 localhost:7002
看看吧。
如果你想要托管伸辟,可以嘗試pm2:
npm i -g pm2
pm2 start dispatch.js
發(fā)個(gè)包
自己寫個(gè)包麻惶,讓然后發(fā)包
cnpm login # 先本地登錄悯仙,不登錄發(fā)不了包
npm init -y
touch index.js # 包里有內(nèi)容了
cnpm publish
可以隨便發(fā)包了骂澄。
有生之年展望:
- 回頭可以再補(bǔ)充點(diǎn),修改頁(yè)面樣式江解,看著不好看忙迁。