使用 Sinopia 搭建npm私有倉庫
前言
隨著前端技術的不斷改革與發展,前端專案越來越大、業務也逐漸複雜,而 前端工程化 已是開發中必不可少的步驟。
在開發中,我們常常會將常用工具、元件等進行封裝,又或是將專案進行合理的模組劃分並封裝成 npm 包上傳到私有倉庫進行維護
此時,我們可以使用 Sinopia 搭建 npm 私有倉庫對模組進行統一管理維護
安裝步驟
確保服務端已安裝node環境
安裝 sinopia
npm install -g sinopia
啟動 sinopia
sinopia
此時看到以下輸出說明啟動成功
warn --- config file - /home/sinopia/config.yaml warn --- http address - http://localhost:4873/
預設配置
在前面啟動時 sinopia 自動建立了一個配置檔案:/home/sinopia/config.yaml
我們只需要開啟編輯它即可修改配置,這裡將預設配置英文註釋替換成了中文
vim /home/sinopia/config.yaml
# # 這是預設的配置檔案。它允許所有使用者做任何事情, # 所以不要在生產系統上使用它。 # # 在這裡檢視更多配置檔案示例: # https://github.com/rlidwka/sinopia/tree/master/conf # # npm包的存放路徑 storage: ./storage auth: htpasswd: file: ./htpasswd # 儲存使用者的賬號密碼等資訊 # 允許註冊的最大使用者數,預設為“+inf”。 # 您可以將其設定為-1以禁用註冊。 # max_users: 1000 # 拉取公共包的地址源,預設為npm的官網,也可改成淘寶的映象地址 uplinks: npmjs: url: https://registry.npmjs.org/ packages: # 這裡都是在配置許可權 '@*/*': # 作用域包 access: $all publish: $authenticated '*': # 我們可以與之交談的其他已知儲存庫的列表#允許所有使用者(包括未經身份驗證的使用者)閱讀和 # 釋出所有包 # # 您可以指定使用者名稱/組名(取決於您的auth外掛) # 還有三個關鍵詞:"$all", "$anonymous", "$authenticated" access: $all # 允許所有已知使用者釋出包 # (任何人都可以預設註冊,記得嗎?) publish: $authenticated # 如果包在本地不可用,則代理請求“npmjs”登錄檔 proxy: npmjs # 日誌設定 logs: - {type: stdout, format: pretty, level: http} #- {type: file, path: sinopia.log, level: info}
如果不想用上面自動建立的 config file 地址,也可以使用 sinopia -c 配置檔案地址
指定配置檔案
配置外網對映,在配置中新增
listen: 0.0.0.0:4873
修改配置後重啟,外網訪問看到下圖說明成功
其他更多配置如果有相關需要,上述預設配置檔案中也有說明,可以去 https://github.com/rlidwka/sinopia/tree/master/conf 檢視
賬號管理
config.yaml 中 auth 配置預設可以通過客戶端 npm adduser 新增賬號
我們可以要新增賬號時將 max_users 的值改大,新增成功後改為 -1 禁止客戶端新增賬號,
當然也可以永遠將 max_users 設定成-1 ,然後修改 file: ./htpasswd 檔案來管理使用者
檔案中密碼是使用 SHA1 加密,假如有自己的後臺系統,可以自己出介面加密存入這個檔案,
如果懶或者對賬號管理不頻繁也可以隨便在網上搜索
例如下面的 z3 賬號:
file: ./htpasswd 檔案示例:
客戶端操作
私有倉庫搭建好後,登入發包等和 npm 無區別,只需要切換源地址即可:npm set registry 你的地址
嫌 npm 源地址切換麻煩也可以使用三方工具管理,例如 nrm ,如果只是拉取包,相當於公司部分前端不需要發包,但需要拉取,也可以在專案中建立 .npmrc 檔案配置即可。