元件化之後,搭建 「私有 npm 倉庫」 是個不錯選擇。
私有 npm 倉庫可以讓我們使用元件就像 npm 官方倉庫裡的包一樣方便。
目前比較好的解決方案有兩種:
sinopia(verdaccio)
cnpm + cnpmjs.org
sinopia 在15年的時候就停止更新了,繼而由 verdaccio 提供更新公升級,所以兩者用法基本上都是一致的,以下都以 sinopia 為例說明。
$ npm install -g sinopia
配置檔案位於~/.config/sinopia/config.yaml
中
# path to a directory with all packages
storage: /home//.local/share/sinopia/storage # 庫存路徑,需要考慮磁碟空間
web: # 自定義web項,即瀏覽器訪問頁面
title: sinopia
auth:
htpasswd:
file: ./htpasswd # 新增使用者(npm adduser)後自動建立,儲存使用者資訊,可以初始化使用者
uplinks: # 可以配置多個上游位址,後面packages中的proxy指定用哪個
npmjs:
url: # 更改此上游位址
packages: # 包的許可權管理,$all為所有人,$authenticated為通過驗證人
# 分布和安裝兩種許可權,值可以特指某幾人
'@*/*': # 跟package.json中的name屬性進行匹配
# scoped packages
access: $all
publish: $authenticated
'*':
access: $all
publish: $authenticated
proxy: npmjs
logs:
- listen: 0.0.0.0:4873 # 設定監聽位址,0.0.0.0匹配本機位址
$ npm config set registry http://:4873/
推薦使用 nrm 來快速切換 npm registry 配置。
sinopia
或者使用 pm2 永久執行
pm2 start sinopia
現在你就可以發布私有包了。
sinopia
的優點是配置簡單,對環境依賴少(僅 node 就夠了),並且支援windows
系統下執行。
但它也有缺點,主要是以下幾點:
快取優化不足,經常會在安裝共有包的時候處於掛起狀態;
不能做官方倉庫的映象。
所以,sinopia
比較適合個人搭建在本地作為 npm 快取,這樣,安裝過的包會直接從快取中獲取,加快安裝速度。
對於企業級的應用來說,就需要另外乙個解決方案了:cnpm + cnpmjs.org
環境依賴:
$ npm install -g cnpm
$ npm install -g cnpmjs.org
配置檔案位於~/.cnpmjs.org/config.json
中
],"mysqldatabase": "cnpmjs", // 資料庫名
"enableprivate": true, // 是否啟用私有化,這樣只有定義在 `admins` 中的使用者才能發布
"admins": ,
"syncmodel": "exist", // 同步模式
"scopes": [ // 包字首,如果不是以這個字首命名的包將不能發布,可以配置多個
"@test"
],"registryhost": "", // 你的伺服器對應的 npm registry 位址
"officialnpmregistry": "" // 如果在該倉庫中找不到的包,會上游到**去找
}
更多配置參考 cnpmjs.org config
$ cnpm config set registry
cnpmjs.org start
執行的時候將會開啟兩個埠:7001(registry),7002(web)。
7001(registry)
server
location ~ /.well-known
client_max_body_size 50m;
}
重啟 nginx,現在你就可以通過
去發布私有包到這個倉庫裡了(如果沒有其他問題的話)。
7002(web)
server
location ~ /.well-known
client_max_body_size 50m;
}
重啟 nginx,現在你就可以通過
訪問倉庫web頁面了(如果沒有其他問題的話)。
永久執行
如果僅通過cnpmjs.org start
執行,一旦關閉終端,程式就會停止執行。推薦使用screen
命令開啟永久執行,可以通過 linux screen 了解下這個命令的用法。
# 建立乙個名為 cnpmjs 的視窗
$ screen -s cnpmjs
# 執行程式
$ cnpmjs.org start
# 按ctrl+a,然後再按d,離開當前視窗,而程式不會終止
ctrl+a+d
# 重新進入 cnpmjs 的視窗,做更多的操作
$ screen -r cnpmjs
npm私有倉庫搭建
為了使公司內部前端公共 更方便的共享,決定使用npm私有倉庫,以前用的公司內部搭建的gitlab,對於前端來說不夠高大上。私有倉庫可先的方案有多種 此文選擇的第5種 購買npm官方私有倉庫服務 首先要花錢,而且花了錢也沒有好的體驗,因為伺服器是在國外的,速度讓人捉急,並且 畢竟是要儲存在別人手裡。c...
搭建企業私有npm倉庫
必要性 如果公司處於隱私保護的目的,不想將封裝的包推到npm社群,但是又急需一套完整的包管理工具來管理很多的封裝元件,以方便公司內部人員使用.建立一套私有的npm倉庫很有必要.注 建立私有倉庫還可以存著一些常用的npm包,相比npm和 映象的cnpm,私有倉庫安裝依賴的速度更快.安裝環境 cento...
NPM私有包部署到私有倉庫
賬號登入 npm login登入成功用 npm who am i進行驗證 初始化npm庫 npm init然後依次輸入相應的引數,其中version必填,最後生成的pagkage如下圖 在pagkage同級寫乙個測試檔案,向外暴露介面 至此,乙個npm包建立完成 發布共有npm包 npm publi...